尝试在地图上绘制点时出错。

3

我试图在英国地图上绘制点,这些点的大小取决于数据的不同。

这是我的部分数据文件(这是我第一次做一个可重现的示例 - 我已经在文件的头部使用dput命令,但如果有更清晰或更好的方法,请告诉我)。

structure(list(V1 = c("St George's", "Sheffield", "Plymouth", 
"Exeter", "King's College London", "East Anglia"), 
Sample = c(183L, 139L, 106L, 128L, 152L, 178L), 
Total = c(417L, 342L, 350L, 520L, 659L, 875L), 
Response = c(43.9, 40.6, 30.3, 24.6, 23.1, 20.3), 
Lat = c(51.427194, 53.380941, 50.415735, 50.737137, 51.511486, 52.621921), 
Long = c(-0.174503, -1.487947, -4.110571, -3.535147, -0.115997, 1.239176)), 
.Names = c("V1", "Sample", "Total", "Response", "Lat", "Long"), 
row.names = c(NA, 6L), class = "data.frame")

一旦我加载了数据文件,我会执行以下操作:
UK <- map_data(map = "world", region = "UK")

ggplot(data = UK, aes(x = long, y = lat, group = group)) +
  geom_polygon() +
  geom_point(data = unidata, aes(x = Long, y = Lat, size = Response, col = "red")) +
  coord_map()

然而,这给我带来了以下错误:
``` 在 eval(expr, envir, enclos) 中出现错误: 找不到对象 'group' ```
英国数据中有一个组,在没有 geom_point 行的情况下运行此代码时,我得到了英国的标准地图,因此我认为错误在于这一行。然而,似乎 geom_point 并不需要 group。所以我一定是忽略了什么?
1个回答

2
当您将描述使用哪个数据框和列的参数移动到geom_polygon()元素时,它就会起作用。运行以下代码,即可获得所需的绘图:
ggplot() +
  geom_polygon(data = UK, aes(x = long, y = lat, group = group)) +
  geom_point(data = unidata, aes(x = Long, y = Lat, size = Response), col = "red") +
  coord_map()

我还将col = "red"参数移出了aes()括号,这样它就不会显示在你的图例中。


谢谢,这太完美了!顺便问一下,您知道这是为什么吗?这是因为一旦添加了geom_point(来自不同的数据集),geom_polygon需要更多的定义,因为它不太清楚应该做什么吗? - Jaccar
我正在阅读这篇文章,其中有Hadley Wickham(编写ggplot2的人)对此问题的一些评论,他的解决方案涉及在两个数据框中为x和y变量设置共同的名称。在此基础上,我得出了这个解决方案。似乎在ggplot()函数中定义的映射适用于所有可视元素,由于unidata数据框没有组列,因此会出现错误。 - A. Stam
这很有道理,也非常有帮助,因为我很确定以前遇到过类似的问题。谢谢。 - Jaccar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接