最佳
我有以下shapefile,这是Flanders(比利时)的地图,我想用ggplot 关于 cheapestEnergyPrices 绘制它。 (因此使用渐变色)
head(flanders@data, n = 1)
OBJECTID Cs012011 Nis_ ... Sec Commune Prov_nl Reg_nl cheapestEnergyPrices mostExpensiveEnergyprices
3 11001A00- 11001 ... A00- AARTSELAAR Antwerpen Vlaanderen 935.03 1254.74
head(flanders@polygons, n=1)
[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 4.387485 51.132957
Slot "area":
[1] 6.825956e-05
Slot "hole":
[1] FALSE
Slot "ringDir":
[1] 1
Slot "coords":
[,1] [,2]
[1,] 4.385794 51.13767
[2,] 4.386132 51.13745
... ... ...
[147,] 4.385794 51.13767
Slot "plotOrder":
[1] 1
Slot "labpt":
[1] 4.387485 51.132957
Slot "ID":
[1] "0"
Slot "area":
[1] 6.825956e-05
此时我尝试了很多东西,例如下一段代码:
> ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group,fill = flanders$cheapestEnergyPrices))
但不幸的是它会给我下一个错误代码
Regions defined for each Polygons
Error: Aesthetics must be either length 1 or the same as the data (1224957): x, y, group, fill
然而,当我用 1 替换佛兰德斯* cheapestEnergyPrices 时,例如:
ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group,fill = 1))
然后我会得到这个不需要的结果,因为所有内容都包含相同的颜色。
因此......我想用ggplot2绘制我的shapefile,其中多边形被着色,相对于例如cheapestEnergyPrices。 例如,其中 cheapestEnergyPrice 最低的 commune 将具有DarkGreen颜色,并且 commublicEnergyPrice 的 commune 更高会有浅绿色/白色,甚至是红色......
答案 0 :(得分:1)
也许:
ggplot() + geom_polygon(data = flanders, aes(x = long, y = lat, group = group, fill = cheapestEnergyPrices))
我认为你不需要回复flanders$
,但没有你的数据就很难说。由于您的列似乎是数字,因此应使用色标。
我猜flanders
是fortify
- 由ggplot
动态编辑并变成data.frame
。一个更简单的选择是:
i)将flanders
变为data.frame
fortify
或even better broom::tidy
ii)将此data.frame
与ggplot2
一起使用,以及其他数据操作。
类似的东西:
flanders_df <- broom::tidy(flanders)
ggplot() + geom_polygon(data = flanders_df, aes(x = long, y = lat, group = group, fill = cheapestEnergyPrices))