messenger_logo
Liên hệ qua Messenger
SciEco

[Blog 003] - Vẽ Bản đồ Việt Nam (trực quan mật độ dân số, hay chỉ số các tỉnh)

KH
Khanh Hoang
Ngày viết: 22/08/2023

1. Giới thiệu

Trong bài viết này, chúng ta sẽ cùng nhau khám phá cách sử dụng ngôn ngữ lập trình R để trực quan dữ liệu bản đồ Việt Nam một cách rõ ràng và dễ hiểu. Bạn sẽ được tìm hiểu cách thể hiện các thông tin thông qua bản đồ (Ví dụ, biểu đồ chỉ số cấp tỉnh, mật độ dân số, …).

Đặc biệt, bài viết này cũng sẽ cung cấp hình ảnh đầy đủ về Hoàng Sa và Trường Sa - những quần đảo quan trọng của Việt Nam.

Kết quả sau khi thực hiện trong R

Trực quan hóa dữ liệu bản đồ là một công cụ mạnh mẽ giúp chúng ta hiểu và thể hiện thông tin phức tạp một cách dễ hiểu. Một số công cụ phổ biến như Excel cung cấp tích hợp khả năng trực quan hóa dữ liệu bản đồ. Tuy nhiên, vẫn còn nhiều thách thức cần giải quyết.

1. Công cụ Trực Quan Dữ liệu Bản đồ:

Công cụ như Excel cung cấp khả năng tạo biểu đồ dạng bản đồ để thể hiện dữ liệu dưới góc độ địa lý. Tuy nhiên, các công cụ này thường hạn chế về tính tùy chỉnh và khả năng trực quan hóa dữ liệu phức tạp. Điều này đặc biệt đúng đối với các dataset lớn và phức tạp.

2. Thiếu Hoàng Sa và Trường Sa:

Một thách thức khác là việc trình bày thông tin liên quan đến các quần đảo quan trọng như Hoàng Sa và Trường Sa. Đây là các địa danh mang ý nghĩa lịch sử và chủ quyền của Việt Nam, nhưng thường bị thiếu hoặc bị biểu đạt không chính xác trong một số nguồn trực quan hóa dữ liệu.

3. Khó tiếp cận với Dataset lớn:

Với sự phát triển của khoa học dữ liệu và công nghệ, các dataset ngày càng trở nên lớn và phức tạp. Điều này tạo ra thách thức trong việc trực quan hóa dữ liệu này thành các biểu đồ và bản đồ dễ hiểu. Việc xử lý và trình bày thông tin từ các dataset lớn cần sự hỗ trợ của các công cụ và phương pháp thích hợp.

2. Dữ liệu bản đồ

Dữ liệu bản đồ được sử dụng được lấy tại data.opendevelopmentmekong.net. Đây là nguồn cung cấp dữ liệu về bản đồ Việt Nam có đầy đủ về Hoàng Sa và Trường Sa

Dạng dữ liệu để lưu thông tin bản đồ được lưu dạng GeoJSON hoặc Shapefile

Trường hợp này tác giả sử dụng dạng GeoJSON

Tác giả sử dụng package sf hỗ trợ đọc file dữ liệu bản đồ

1library(sf)
2URL <- 'https://data.opendevelopmentmekong.net/dataset/55bdad36-c476-4be9-a52d-aa839534200a/resource/b8f60493-7564-4707-aa72-a0172ba795d8/download/vn_iso_province.geojson'
3vietnam <- st_read(URL)
4View(vietnam)

Sử dụng package ggplot2 vẽ bản đồ với hàm geom_sf()

1ggplot(vietnam) +  
2	geom_sf()

Vẽ màu theo các tỉnh, dùng cột Name_VI có trong dữ liệu bản đồ

1ggplot(vietnam) +  
2	geom_sf(aes(fill=Name_VI))

Vì trong dữ liệu bản đồ chưa có thông tin về mật độ dân số, ta sử dụng dữ liệu được lấy tại tổng cục thống kê, truy cập vào dữ liệu tại đây

Sử dụng package readxl để đọc dữ liệu từ file excel

1library(readxl)
2vn_density <- read_xlsx('~/Desktop/vn_density.xlsx')

Sử dụng hàm left_join() trong package dplyr để merge dữ liệu bản đồ với dữ liệu mật độ dân số với nhau

1library(dplyr)
2vietnam <- vietnam %>%
3   left_join(vn_density, by=c('Name_VI' = 'Province'))

Lúc này trong dữ liệu bản đồ đã có thông tin mật độ dân số tại cột

1library(latex2exp) # TeX() function
2ggplot(vietnam) +
3  geom_sf(aes(fill=Density)) +
4  scale_fill_gradient(
5    trans='log',
6    breaks=c(100, 500, 1500, 3000),
7    name=TeX('Mật độ dân số (người/$\\km^{2}$)')
8  )

Chỉnh sửa màu sắc và vị trí của chú thích bản đồ, ta có kết quả như sau

1ggplot(vietnam) +
2  geom_sf(aes(fill=Density)) +
3  scale_fill_gradient(
4    trans='log',
5    breaks=c(100, 500, 1500, 3000),
6    name=TeX('Mật độ dân số (người/$\\km^{2}$)')
7  ) +
8  theme_void() +
9  theme(
10    legend.position = c(0.78, 0.82),
11    legend.title = element_text(size=9),
12    plot.background = element_rect(fill='#eeeeee', colour='white')
13  )

#VisualizingVietnamMap #HoangSaTruongSa #R


Bài viết khác
Bài viết này tóm tắt nội dung video hướng dẫn cách xây dựng một gói R tích hợp mã C++ và thư viện Armadillo. Video tập trung vào quy trình trên Windows — hệ điều hành phổ biến nhất בקרב người dùng R — bắt đầu từ cài đặt R và RTools (công cụ biên dịch bắt buộc cho C++), sau đó trình bày cách sử dụng mẫu gói có sẵn kèm theo armadillo4r. Chuẩn bị môi trường trên Windows Trước khi viết bất kỳ dòng mã C++ nào, máy tính cần bộ công cụ biên dịch hoạt động. Trên Windows, nghĩa là bạn phải cài đặt RTools phiên bản tương ứng với bản R đang dùng. Video minh hoạ từng bước: Tải bản cài đặt R mới nhất từ CRAN.
Trong thế giới dữ liệu địa không gian, việc tạo ra bản đồ dự đoán từ các điểm quan sát là một thao tác phổ biến và ngày càng dễ dàng nhờ sự phong phú của các công cụ trong R. Tuy nhiên, điều gì khiến một bản đồ “đẹp” thật sự đáng tin cậy? Chìa khóa nằm ở việc hiểu rõ ranh giới của dữ liệu, công cụ và đặc điểm của mô hình – thay vì chỉ dừng lại ở vẻ đẹp hình ảnh bên ngoài. Trong buổi thuyết trình tại nhóm người dùng R Rome (ngày 27 tháng 11 năm 2025), Jakub Nowosad đã trình bày một quy trình thực hành hiệu quả để xây dựng và đánh giá các bản đồ dự đoán không gian, sử dụng dữ liệu về đa dạng loài thực vật ở Nam Mỹ làm ví dụ. Qua đó, ông nhấn mạnh rằng: tạo bản đồ không phải là kết thúc, mà là bước khởi đầu cho một quá trình suy luận cẩn trọng. Từ điểm quan sát đến bề mặt dự đoán: Những phương pháp phổ biến Việc chuyển đổi từ tập hợp điểm dữ liệu (chẳng hạn như địa điểm ghi nhận loài thực vật) thành bản đồ liên tục – nơi mỗi vị trí trên bản đồ đều có một giá trị dự đoán – là một bài toán tiêu biểu trong phân tích không gian. Các phương pháp được ứng dụng bao gồm:
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội