4

我正在努力使用 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”,并且在使用 ggplot 命令时出现了这个错误:“ggplot2 不知道如何处理类 sfc_MULTIPOLYGON/sfc 的数据”。

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

有人对解决这些问题有什么建议吗?

编辑:

austensen 关于下载开发者 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()) 
4

0 回答 0