Tôi muốn vẽ bản đồ thế giới bằng ggplot2 (v.9) kết hợp hai phần nếu thông tin. Ví dụ sau minh họa:bản đồ ggplot với l
library(rgdal)
library(ggplot2)
library(maptools)
# Data from http://thematicmapping.org/downloads/world_borders.php.
# Direct link: http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip
# Unpack and put the files in a dir 'data'
gpclibPermit()
world.map <- readOGR(dsn="data", layer="TM_WORLD_BORDERS_SIMPL-0.3")
world.ggmap <- fortify(world.map, region = "NAME")
n <- length(unique(world.ggmap$id))
df <- data.frame(id = unique(world.ggmap$id),
growth = 4*runif(n),
category = factor(sample(1:5, n, replace=T)))
## noise
df[c(sample(1:100,40)),c("growth", "category")] <- NA
ggplot(df, aes(map_id = id)) +
geom_map(aes(fill = growth, color = category), map =world.ggmap) +
expand_limits(x = world.ggmap$long, y = world.ggmap$lat) +
scale_fill_gradient(low = "red", high = "blue", guide = "colorbar")
Tuy nhiên, giải pháp này không phải là một cách tốt đẹp để hiển thị cả growth
và category
. Growth
rất dễ thấy, nhưng category
hầu như không thể nhìn thấy vì nó chỉ là một đường viền.
Tôi đã cố gắng tăng kích thước đường viền nhưng không may mắn (geom_map mới khó làm việc). Có ai biết làm thế nào để tăng kích thước biên giới trong ví dụ trên, hoặc thậm chí tốt hơn, một cơ chế để hiển thị hai yếu tố?
Câu hỏi tiền thưởng: tên quốc gia, chẳng hạn như tên được sử dụng bởi gói bản đồ (có tính năng USSR!) Là dữ liệu được sử dụng trong ví dụ này là mong manh. Tôi thích sử dụng ISO 3166-1 alpha-3 (1). Có ai biết dữ liệu dễ dàng sử dụng với các tính năng mà ggplot2 tên ISO -... nước (bao gồm trong dữ liệu được liên kết)
Kết quả:
result http://ompldr.org/vY3hsYQ
what is world.map? nó không được định nghĩa trong mã của bạn. Nếu tôi cố gắng củng cố (w, region = "NAME"), tôi nhận được lỗi 'multibyte character' không hợp lệ. Vui lòng cung cấp mã có thể tái sản xuất. –
Xin lỗi, đã sửa. Đó là w. – Rasmus
Tôi nhận được lỗi sau trên dòng củng cố: "Lỗi trong nchar (ID): chuỗi multibyte không hợp lệ 1" –