输入:
Percent.Turnout US.State
70 CA
80 NM
76 RI
我拥有美国50个州中每个州的数据。此外,US.State的州缩写与函数state.abb
中的缩写一致我想创建一个美国地图,其中Percent.Turnout打印在每个州。此外,使用ColorBrewer包,我想根据Percent.Turnout相对于其他状态为每个状态着色。
我对ggplot语法不是很熟悉,所以基础R中的建议会受到赞赏(如果可行的话)
答案 0 :(得分:1)
如果您想使用ggplot2
,那么您需要做的主要事情是将州缩写列映射为小写的完整州名(为此,您可以使用{{ 1}},但请确保在其上应用state.name
以使其格式正确。)
从那里开始,只需将数据集加入州的地理空间信息并绘制数据即可。以下代码段将逐步指导您完成此步骤:
tolower()
这是上面代码段的输出:
现在,您说您还希望将值# First, we need the ggplot2 library:
> library(ggplot2)
# We load the geospatial data for the states
# (there are more options to the map_data function,
# if you are intrested in taking a look).
> states <- map_data("state")
# Here I'm creating a sample dataset like yours.
# The dataset will have 2 columns: The region (or state)
# and a number that will represent the value that you
# want to plot (here the value is just the numerical order of the states).
> sim_data <- data.frame(region=unique(states$region), Percent.Turnout=match(unique(states$region), unique(states$region)))
# Then we merge our dataset with the geospatial data:
> sim_data_geo <- merge(states, sim_data, by="region")
# The following should give us the plot without the numbers:
> qplot(long, lat, data=sim_data_geo, geom="polygon", fill=Percent.Turnout, group=group)
添加到地图中。在这里,我们需要找到各种状态的中心点。您可以根据我们上面检索到的地理空间数据(在Percent.Turnout
数据框中)计算出来,但结果看起来不会令人印象深刻。值得庆幸的是,R具有已为我们计算的状态中心的值,我们可以利用它,如下所示:
states
这是上一句话的输出: