【发布时间】:2015-12-30 16:24:37
【问题描述】:
我正在尝试使用 ggplot 根据 @data 插槽中的值映射区域和标签。我的错误与问题here、here 和here 中的相同,但我无法将这些答案转化为我的问题。我可以从 raster 包中的 getData 绘制美国地图中的状态,但从那里遇到了麻烦。例如,这些是我尝试过的数据集(我列出了包,因为我认为它们可能与问题有关)...
library(rgdal)
library(raster)
library(ggplot2)
library(maps)
library(maptools)
library(ggmap) # used for theme_nothing() later
us <- getData("GADM",country="USA",level=1)
PA <- us[us$NAME_1 == 'Pennsylvania',]
AK <- us[us$NAME_1 == 'Alaska',]
当我尝试这个时,我得到了一张时髦的地图(PA 是一个多边形)。
ggplot(data=PA, aes(long, lat)) +
geom_polygon(aes(group=group), color='black', fill=NA) +
geom_text(data=PA, aes(long, lat, label = PA$NAME_1))
当我尝试这个时,我得到了美学错误(AK 由 2 个多边形组成)。
ggplot(data=AK, aes(long, lat)) +
geom_polygon(aes(group=group), color='black', fill=NA) +
geom_text(data=AK, aes(long, lat, label = AK$NAME_1))
为每个多边形定义的区域 为每个多边形定义的区域 错误:美学必须是长度1或与数据相同(816071):x,y,标签
我不知道为什么我必须将 $ 放在 geom_text 中并且已经存在数据调用,但是没有它它无法识别变量。我还尝试按照代码中的 OBJECTID 为 2 个 AK 多边形着色,但得到了相同的美学错误。
ggplot(data=AK, aes(long, lat)) +
geom_polygon(aes(group=group), color='black', fill=AK$OBJECTID)
感谢您的任何见解。我真的很想更频繁地使用 R 进行映射。
【问题讨论】:
-
你想要的输出是什么?为什么要绘制这么多 geom_texts?
-
您真的要在每个坐标处添加州名吗?这就是为什么你的情节看起来很奇怪。您可以查看
annotate,而不是只添加一次标签。我无法重现您在 AK 不绘图时遇到的问题。如果您想用变量填充,您需要将填充移到aes中 - 有关示例,请参见geom_polygon的帮助页面。 -
不,我不想在每个坐标处添加标签。我在一组状态上执行此操作,并希望每个多边形都有一个标签,在这种情况下只是 PA 多边形。我将研究“注释”。我尝试在新会话中运行我的代码,但仍然出现美学错误。我正在使用 3.2.2
-
我已经能够使用
annotate("text", x=-77, y=41, label = PA$NAME_1)获得仅适用于 PA 单个多边形的注释,但无法获得多个多边形的标签,如 AK。 -
状态对象没有中心属性吗?当我查看 str(PA) 时,在我看来
.. .. .. ..@ labpt : num [1:2] -77.8 40.9行具有该值。 (看起来是为放置桌子而设计的。)
标签: r ggplot2 spatial aesthetics