我有一些地图数据被分成几组并想要绘制一个facet_wrap
这是我到目前为止的代码:
library(dplyr)
library(ggplot2)
test_points =data.frame( map = c(rep("AAA", 5),rep("BBB", 5),rep("CCC", 5),rep("DDD", 5)),
LAT = c(runif(5, -90, -45), runif(5, -45, 0), runif(5, 0, 45), runif(5, 45, 90)),
LON = c(runif(5, -180, -90), runif(5, -90,0), runif(5, 0, 90), runif(5, 90, 180)))
map_lim = test_points %>%
group_by(map) %>%
summarise(y_min = floor(min(LAT)),
y_max = ceiling(max(LAT)),
x_min = floor(min(LON)),
x_max = ceiling(max(LON)))
worldmap = map_data("world")
ggplot() +
geom_polygon(data = worldmap,
aes(x = long, y = lat, group = group)) +
geom_point(data = test_points,
aes(x = LON, y = LAT, group= map, colour = map)) +
#coord_cartesian(
# ylim=c(map_lim[ map_lim$map==map, 2], map_lim[ map_lim$map==map, 3]),
# xlim=c(map_lim[ map_lim$map==map, 4], map_lim[ map_lim$map==map, 5])
#) +
coord_cartesian(
ylim=c(map_lim$y_min, map_lim$y_max),
xlim=c(map_lim$x_min, map_lim$x_max)
) +
facet_wrap(~ map, scales = "free")
你可以看到我尝试了两种限制坐标的方法..既不起作用。
我得到的是整个世界......每个都有五分。
是否可以单独扩展每个地图?
答案 0 :(得分:0)
geom_map
比geom_polygon
好,因为它会自动截断到点等所需的区域。
worldmap <- map_data("world")
ggplot() +
geom_map(data = worldmap, map = worldmap, mapping = aes(map_id = region)) +
geom_point(data = test_points,
aes(x = LON, y = LAT, group= map, colour = map)) +
coord_equal() +
facet_wrap(~ map, scales = "free")
唯一的问题是scales = "free"
没有使用非笛卡尔坐标,因此您无法使用coord_map
或特定的制图投影。如果您的纬度相似,coord_fixed
可能会更好。