Bản đồ choropleth
Giờ bạn đã hiểu cách vẽ đa giác, hãy đặt các đa giác đó lên bản đồ. Nhớ rằng, bạn thay lời gọi ggplot() bằng ggmap() và lời gọi ggplot() gốc sẽ chuyển vào đối số base_layer(), sau đó bạn thêm lớp đa giác như bình thường:
ggmap(corvallis_map_bw,
base_layer = ggplot(ward_sales,
aes(lon, lat))) +
geom_polygon(aes(group = group, fill = ward))
Hãy thử chạy trong console ngay bây giờ!
Ôi không, có gì đó sai sai. Các khu 1, 3 và 8 trông lởm chởm và không đúng. Chuyện gì xảy ra vậy? Một phần ranh giới khu nằm ngoài phạm vi bản đồ. Do các thiết lập mặc định trong ggmap(), mọi dữ liệu ngoài bản đồ sẽ bị loại trước khi vẽ, nên một số ranh giới đa giác bị bỏ đi và khi các điểm còn lại được nối lại, bạn sẽ thấy hình dạng sai.
Đừng lo, có cách xử lý: ggmap() cung cấp một số đối số để kiểm soát hành vi này. Dùng extent = "normal" cùng với maprange = FALSE sẽ buộc biểu đồ dùng phạm vi dữ liệu thay vì phạm vi bản đồ để xác định ranh giới khi vẽ.
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
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.
# Fix the polygon cropping
ggmap(corvallis_map_bw,
base_layer = ggplot(ward_sales, aes(lon, lat))) +
geom_polygon(aes(group = group, fill = ward))