Bắt đầu ngayBắt đầu miễn phí

Tại sao Greenland lại to như vậy?

Xem kỹ hơn biểu đồ. Tại sao Greenland trông lớn hơn phần lục địa liền mạch của Mỹ (contiguous US) trong khi thực tế chỉ khoảng một phần ba kích thước?

Khi bạn vẽ vị trí kinh độ và vĩ độ lên trục x và y của biểu đồ, bạn đang coi 1 độ kinh độ có cùng kích thước ở mọi nơi. Tuy nhiên, vì Trái Đất gần như hình cầu, độ dài tương ứng với 1 độ kinh độ phụ thuộc vào vĩ độ, thay đổi từ 111 km ở xích đạo đến 0 km ở hai cực.

Cách bạn lấy vị trí trên một mặt cầu và vẽ chúng lên mặt phẳng hai chiều được mô tả bởi một phép chiếu bản đồ (projection). Mặc định bạn dùng ở đây (còn gọi là phép chiếu Equirectangular) làm méo độ rộng của các vùng gần cực. Mọi phép chiếu đều gây méo dạng ở khía cạnh nào đó (vì hình cầu không phải mặt phẳng!), nhưng các phép chiếu khác nhau cố gắng bảo toàn những tính chất khác nhau (ví dụ: diện tích, góc hoặc khoảng cách).

Trong tmap, tm_shape() có đối số projection cho phép bạn đổi phép chiếu cho biểu đồ.

(Lưu ý: thay đổi phép chiếu của biểu đồ ggplot2 được thực hiện bằng hàm coord_map(). Xem ?coord_map() để biết thêm chi tiết.)

Bài tập này là một phần của khóa học

Trực quan hóa dữ liệu địa lý trong R

Xem khóa học

Hướng dẫn bài tập

Để giúp bạn thấy sự khác nhau giữa các phép chiếu, chúng tôi đã thêm một lớp tm_grid() để kẻ các đường kinh, vĩ tuyến cách đều trên bản đồ.

Trong lời gọi tm_shape() của bạn:

  • Thử phép chiếu Hobo–Dyer (projection = "hd"), được thiết kế để bảo toàn diện tích.
  • Ở biểu đồ thứ hai, thử phép chiếu Robinson (projection = "robin"), được thiết kế như một thỏa hiệp giữa việc bảo toàn góc cục bộ và diện tích.
  • Cho vui, lặp lại biểu đồ trước, nhưng thêm tm_style("classic") để xem tmap có thể kiểm soát mọi khía cạnh hiển thị của bản đồ như thế nào.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

library(sp)
library(tmap)

# Switch to a Hobo–Dyer projection
tm_shape(countries_spdf) +
  tm_grid(n.x = 11, n.y = 11) +
  tm_fill(col = "population", style = "quantile")  +
  tm_borders(col = "burlywood4") 

# Switch to a Robinson projection
tm_shape(countries_spdf) +
  tm_grid(n.x = 11, n.y = 11) +
  tm_fill(col = "population", style = "quantile")  +
  tm_borders(col = "burlywood4") 

# Add tm_style("classic") to your plot
Chỉnh sửa và Chạy Mã