我正在努力使用 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())