如何使多边形在ggplot中被剪裁而不是消失
Posted
技术标签:
【中文标题】如何使多边形在ggplot中被剪裁而不是消失【英文标题】:how to make polygons clipped rather than vanish in ggplot 【发布时间】:2014-07-25 21:40:31 【问题描述】:我正在尝试使用我自己的多边形创建等值线图。多边形平铺整个世界,但我只想显示美国境内的区域。我想要的是剪辑超出覆盖美国的边界框的多边形,但是当我将边界框指定为限制时,会发生部分位于边界框之外的所有多边形根本不绘制。
我有这样的数据,指定矩形:
lat long rank group
1 36.56792 -80.260138889 1 1
2 37.97319 -80.260138889 1 1
3 37.97319 -78.866805556 1 1
4 36.56792 -78.866805556 1 1
5 -45.00000 -0.008333334 2 2
6 -22.00000 -0.008333334 2 2
7 -22.00000 22.075000000 2 2
8 -45.00000 22.075000000 2 2
9 -44.99500 -67.441666667 3 3
10 -33.60000 -67.441666667 3 3
11 -33.60000 -45.700000000 3 3
12 -44.99500 -45.700000000 3 3
...
我正在使用这样的代码:
library(ggplot2)
library(maps)
tab = read.table("hiergrid.level1.penn-ave.dat", header = TRUE)
data = data.frame(tab)
mapstates = map_data("state")
ggplot(data, aes(long, lat, group=group)) +
geom_polygon(aes(fill=rank)) +
ylim(25,50) +
xlim(-125,-60) +
coord_map(project="polyconic") +
geom_path(data = mapstates, color = "white", size = .75)
我得到这样的输出:
可以看出,边界框外的多边形根本没有绘制,但我希望它们被绘制和裁剪。有什么帮助吗?
【问题讨论】:
使用coord_cartesian
代替 xlim 和 ylim
【参考方案1】:
好的,看来可以通过将限制指定为 coord_map()
来解决此问题。但是我还是要指定xlim
和ylim
:
library(ggplot2)
library(maps)
tab = read.table("hiergrid.level1.penn-ave.dat", header = TRUE)
data = data.frame(tab)
mapstates = map_data("state")
ggplot(data, aes(long, lat, group=group)) +
ylim(0,90) +
xlim(-180,-20) +
geom_polygon(aes(fill=rank)) +
coord_map(project="mercator", ylim=c(24,50), xlim=c(-126,-66)) +
geom_path(data = mapstates, color = "white", size = .75)
输出是这样的:
但是请注意,如果我忽略了 xlim
和 ylim
,或者如果它们在 X 轴上太宽,我会得到非常奇怪的输出,如下所示:
我不确定为什么会这样。
【讨论】:
以上是关于如何使多边形在ggplot中被剪裁而不是消失的主要内容,如果未能解决你的问题,请参考以下文章