5

我在这个问题中遇到了与@Mike 类似的问题。问题是如何设置地图中区域的轮廓颜色。

geom_polygon建议的解决方案是在边界上添加一个绘图。只要绘制了整个区域,这将起作用。当试图限制到一个子区域时,多边形会被奇怪地绘制(可能是因为一些顶点被丢弃)。使用标准geom_map示例:

# Create example data
ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(id = ids, value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5))
positions <- data.frame(
  id = rep(ids, each = 4),
  x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3, 0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
  y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5, 2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)

# Plot data
ggplot(values, aes(fill = value)) + 
    geom_map(aes(map_id = id), map = positions) +
    geom_polygon(aes(x,y,group=id), fill = NA, colour = 'red', data = positions) +
    expand_limits(positions) +
    ylim(0, 3)

一种可能的解决方法是使用颜色美学,geom_map然后使用 手动选择轮廓颜色scale_colour_manual,如下所示:

ggplot(values, aes(fill = value)) + 
    geom_map(aes(map_id = id, colour = 'white'), map = positions) +
    scale_colour_manual(values=c('white')) +
    expand_limits(positions) +
    ylim(0, 3)

所以我有两个问题:

  1. geom_polygon限制轴限位时为什么不能正常工作?
  2. 有没有比这里展示的更优雅的轮廓着色解决方案?

下面是绘图输出。提前谢谢了。

使用 geom_polygon 无法正常工作 工作,但不是很优雅

4

1 回答 1

8

我相信你对为什么它不起作用是正确的。xlim在绘图之前使用或ylim剪辑数据来限制 x 或 y 限制。这最终会从你的多边形中省略一些顶点,所以有些东西不会被绘制出来。

这就是为什么有,它允许您在裁剪数据的情况下coord_cartesian调整 x 和 y 限制。它将“放大”到正确的区域,而不是剪裁然后绘图。

所以,而不是ylim,尝试+ coord_cartesian(ylim = c(0,3))

于 2012-05-13T15:26:56.833 回答