用ggplot和sf绘制国会等值线图

时间:2017-11-14 15:10:26

标签: r plot ggplot2 heatmap sf

我正在努力使用ggplot2和sf库创建一个国会热图。

到目前为止,我可以创建州议会选区的空白地图:

library(ggplot2)
library(fiftystater)
library(colorplaner)
library(USAboundaries)
library(sf)

#This is where I'm pulling congressional district data from 
data('us_congressional')

#Creating dummy data
us_congressional <- us_congressional(resolution = c("low", "high"), states = 
NULL)
us_congressional$dummy <- runif(nrow(dftest), 1, 100)

#Selecting certain states to plot
plot_states_data <- us_congressional(states=c("Maine", "Minnesota", "New 
York", "California", "Montana", "Illinois", "Florida", "Texas"), resolution 
= 'high')

plot(st_geometry(plot_states_data))

我希望能够将虚拟数据绑定到空白绘制的形状并填充渐变 - 如下所示:

#These don't work

ggplot(st_geometry(plot_states_data)) + geom_sf(aes(fill=dummy)) + 
scale_fill_gradient2(low='red',mid = 'white', high = 'blue', midpoint = 50)

# or

plot(st_geometry(plot_states_data)) + geom_sf(aes(fill=dummy)) +
scale_fill_gradient2(low='red',mid = 'white', high = 'blue', midpoint = 50)

但是我遇到了一个错误:“使用plot命令时找不到函数”geom_sf“”这个错误:“ggplot2在使用ggplot命令时不知道如何处理类sfc_MULTIPOLYGON / sfc的数据” 。

我认为问题是plot_states_data既是数据框又是sf对象类,我不确定如何使plot_states_data成为数据框或如何使ggplot和sf一起工作。

有没有人有解决这些问题的建议?

编辑:

奥斯坦森关于下载开发人员ggplot2的评论解决了这个问题。对于其他试图进行相同类型映射的人来说,这个命令对我来说很有用:

ggplot(plot_states_data) + geom_sf(aes(fill=dummy)) + 
  scale_x_continuous(breaks = NULL) + 
  scale_y_continuous(breaks = NULL) +
  scale_fill_gradientn("Title",
                       colours = c('darkred', 'tomato1', 'cyan2', 
                                   'darkblue'), 
                       values = c(0,.5,.5000001, 1)) + 
  theme(panel.background = element_blank(), axis.ticks = element_blank(), 
        axis.text = element_blank()) 

0 个答案:

没有答案