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