2013-07-15 109 views
0

我有这样一段代码:ggplot地图点:大小,颜色,传说,美观的问题

ggplot(legend = FALSE) + 
geom_polygon(data = map.df, size = 0.1, aes(long, lat, group = group, colour = "grey80", fill = ind_vul)) + 
scale_fill_gradient2(low = "blue", high = "red", midpoint = mean(map.df$ind_vul, na.rm = TRUE)) + 
geom_point(data = puntos.df, aes(as.numeric(long), as.numeric(lat), colour = geografico), size = 2) + 
facet_wrap(~municipio, scales = "free") + 
tema.mapas 

而且我发现几个问题(显然与我对这个话题的无知),问题是下面(所有相关的,见ggplot throwing an error in weird circumstances):

  • 尺寸参数geom_polygon正在奇怪的是,aes之外没有效果,它里面被忽略,如果没有一个colour参数。

  • colour参数在代码忽略(再次geom_polygon)以上SAIDS colour="grey80"但多边形的轮廓线是在另一种颜色和“grey80”显示为点的图例!

+3

= 0.1'并不是要求的列你'map.df'他们应该是'AES之外'电话。如果没有一些样本数据,那么我可以提供所有帮助,因为我看不到您的错误,请查看您的数据或者寻求解决方案。 – Justin

+1

Justin是正确的 - 换句话说,当'color'位于'aes'里时,'ggplot'认为你要告诉它将数据中的某一列上的图的颜色作为基础。没有名为“grey80”的列,所以它只是组成一个颜色。 'aes'之外,'color'会寻找一个名为'grey80'的颜色。 –

+0

你们都是绝对正确的!有人想发布它作为答案? – nanounanue

回答

0

由于colour='grey80'size=0.1不要求你map.df的一列,他们应该是aes通话之外。换句话说,当colour位于aes的内部时,ggplot认为您告诉它将数据中的某一列的图的颜色基于该颜色,或者如果您在此处提供了文字字符串,则创建该字符串与在通常的调色板中输入一些内容。在某些情况下,将美学映射到文字字符串可能是一种有用的技术,但与将美学设置为价值不同。在aes之外,颜色将查找名为"grey80"的颜色,并将使用该特定颜色。

[改编自意见和略有扩大]因为`颜色='grey80'`和'大小