0

我正在尝试运行以下代码:

p <- ggplot(data=cuernavaca.map, aes(long, lat, group=group))
p + geom_polygon(size=0.1, aes(fill=pobtot)) + coord_equal() + facet_wrap(~nombre_municipio,scales="free") + coord_equal()  + scale_fill_gradient2(low="blue", high="red", midpoint=mean(cuernavaca.map$pobtot, na.rm=TRUE))+ tema.mapas + ggtitle("Cuervaca y Zona metropolitana\nPoblación Total") + labs(fill="Población total") 

但我收到了这个错误:

错误:ggplot2 不知道如何处理 uneval 类的数据

该对象cuernavaca.map是一个设防SpatialDataFrame

奇怪的是,这只发生在一台机器(Ubuntu 13.04、RStudio 0.97.551、R 3.0.1)上,当我执行knit2html或点击按钮knit HTML时,如果我在控制台(RStudio 内部)执行代码行,一切可以工作(我的意思是,情节已经完成),如果我将该代码剪切并粘贴到其他代码中.Rmd file,并且如果我在另一个 Ubuntu 机器(与上述相同)或 MacOS X 中执行它,它可以工作!

有任何想法吗?

更新:

正如评论中所写,问题似乎是未命名参数的顺序,所以我将代码更改为:

ggplot(data = cuernavaca.map) + 
geom_polygon(mapping = aes(x = long, y = lat, group = group, colour = NA, fill = pobtot)) +
coord_equal() + 
facet_wrap(~nombre_municipio, scales = "free") + 
scale_fill_gradient2(low = "blue", high = "red", midpoint = mean(cuernavaca.map$pobtot, 
na.rm = TRUE)) + 
tema.mapas + 
ggtitle("Cuervaca y Zona metropolitana\nPoblación Total") + 
labs(fill = "Población total")

并且知道一切正常......几乎。

如果您看到我删除了中的size参数geom_polygon并将其设置为colour的代码NA,我这样做不是出于美观的原因,而是因为该参数不起作用:多边形的线宽变得巨大,颜色被忽略,有时会变成浅红色,有时会消失...

有趣的是,这个下面的情节现在也可以工作了,但你猜怎么着?代码如下:

ggplot(legend = FALSE) + 
geom_polygon(data = cuernavaca.map, size = 0.1, aes(long, 
lat, group = group, colour = "grey80", fill = ind_vul)) + 
scale_fill_gradient2(low = "blue", high = "red", midpoint = mean(cuernavaca.map$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 +  
labs(fill = "Índice de vulnerabilidad")

puntos.df是一个data.frame经纬度,所以没什么大不了的,但不是size参数如何超出aes并且正在工作(我没有收到“不知道如何处理数字......等等等等”的错误)

可能是内存问题?

4

1 回答 1

0

正如编辑中所说,答案是使用命名参数:

ggplot(data = cuernavaca.map) + 
geom_polygon(mapping = aes(x = long, y = lat, group = group, colour = NA, fill = pobtot)) +
coord_equal() + 
facet_wrap(~nombre_municipio, scales = "free") + 
scale_fill_gradient2(low = "blue", high = "red", midpoint = mean(cuernavaca.map$pobtot, na.rm = TRUE)) + 

有一些悬而未决的问题,但我发布了一个新问题:ggplot map with points: size, colour, legend,esthetics questions

于 2013-07-15T15:29:51.550 回答