【问题标题】:Too many lines drawn for map borders using ggplot in R在 R 中使用 ggplot 为地图边界绘制的线太多
【发布时间】:2018-02-03 16:27:21
【问题描述】:

我正在使用 ggplot 创建一个地图,并根据我的数据使用渐变填充不同的区域。

默认情况下没有绘制边界线的地图。我想包括它们,并根据this question编写了一些代码。然而,我认为这导致了太多的线,连接了地区的所有角落。我该如何避免这种情况?

在下面的代码中,datafile 是我想要在地图上显示的数据的存储位置,Scot 是 shapefile。

导致问题的线是 geom_polygon。

ggplot() +
  geom_map(data = datafile, aes(map_id = region, fill = datafile$"2007"), map = Scot) +
  geom_polygon(data = Scot, aes(x = Scot$long, y = Scot$lat), colour = "gray", fill = NA) +
  expand_limits(x = Scot$long, y=Scot$lat) +
  scale_fill_gradient(low = ("lightyellow"), high = ("red"), limits = c(0,35000)) +
  ggtitle("2007") +
  coord_fixed(1.2) +
  theme(axis.text.x = element_blank(), axis.text.y = element_blank(), 
    axis.ticks = element_blank(), axis.title.x = element_blank(), 
    axis.title.y = element_blank(), 
    panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
    panel.border = element_blank(), panel.background = element_blank(),
    legend.title = element_text(face = "bold"),
    plot.title = element_text(face = "bold", hjust = 0.5))

【问题讨论】:

  • 不要在aes 中使用$ 表示法。这可能是您的问题的原因。对于名为2007 的列,用`s 将其包围

标签: r ggplot2 mapping border


【解决方案1】:

尝试将group = group 添加到您的 geom_polygon 行。正如 Richard Telford 所说,您不必在 aes 中使用 $ 符号,因为您已经通过 data = Scot 指明了数据源:

... + geom_polygon(data = Scot, aes(x = long, y = lat, group = group), 
                   colour = "gray", fill = NA)

注意:我假设 Scot 数据框是通过强化某种空间数据集获得的,该数据集始终包含一个名为“组”的列。如果不存在,请查找指示哪些点应属于同一多边形的列。 geom_polygon 状态的帮助文件(已添加重点):

多边形与路径(由 geom_path 绘制)非常相似,除了 起点和终点相连,内部由 充满。 群体审美决定了哪些案例是相关联的 组合成一个多边形

【讨论】:

  • 谢谢,这已经奏效(我还删除了 $,感谢您和 Richard 指出这一点)。
猜你喜欢
  • 1970-01-01
  • 2019-08-01
  • 2014-11-10
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多