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

问题描述:

我想绘制英国地图上的点,点的大小根据数据而变化。试图在地图上绘制点时出错

这是我的数据文件的一部分(这是我第一次做一个可重复的例子 - 我已经在文件的头部使用了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() 

然而,这让我以下错误:

Error in eval(expr, envir, enclos) : object 'group' not found

有在英国一组数据,当我运行这个代码而没有geom_point行时,我得到了英国的标准地图,所以我认为错误在这一行。但是,geom_point似乎并不需要组。所以我必须忽略一些东西?

将参数描述使用哪个数据框和列到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() 

我也感动aes()括号外的col = "red"参数,所以它不会在你的传说出现。

+0

谢谢,这是完美的!出于兴趣,你知道这是为什么吗?是否因为一旦添加geom_point的东西(来自不同的数据集),geom_polygon需要更多的定义,因为它不清楚它应该做什么? – Megan

+0

我正在阅读[此帖](http://r.789695.n4.nabble.com/Plotting-from-different-data-sources-on-the-same-plot-with-ggplot2-td835473.html)在这个问题上Hadley Wickham(他写了ggplot2)发表了一些评论,他的解决方案涉及到两个数据框中的x和y变量的通用名称。扩大这一点,我来到这个解决方案。看起来你在'ggplot()'函数中定义的映射适用于所有的可视元素,并且由于unidata数据框没有组列,所以会出现错误。 –

+0

这很有道理,而且非常有帮助,因为我很确定我过去曾经有过类似的小错误。谢谢。 – Megan