绘制美国热图与文本

时间:2015-04-01 02:05:04

标签: r plot maps

输入:

Percent.Turnout  US.State
70               CA
80               NM
76               RI

我拥有美国50个州中每个州的数据。此外,US.State的州缩写与函数state.abb

中的缩写一致

我想创建一个美国地图,其中Percent.Turnout打印在每个州。此外,使用ColorBrewer包,我想根据Percent.Turnout相对于其他状态为每个状态着色。

我对ggplot语法不是很熟悉,所以基础R中的建议会受到赞赏(如果可行的话)

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您想使用ggplot2,那么您需要做的主要事情是将州缩写列映射为小写的完整州名(为此,您可以使用{{ 1}},但请确保在其上应用state.name以使其格式正确。)

从那里开始,只需将数据集加入州的地理空间信息并绘制数据即可。以下代码段将逐步指导您完成此步骤:

tolower()

这是上面代码段的输出:

enter image description here

现在,您说您还希望将值# 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

这是上一句话的输出:

enter image description here