我正在使用一个Shapefile(包含311个元素的大型SpatialPoygonsDataFrame)在R中工作,这是1970年印度的地区 map .我可以通过数据列b_all(特定于地区的回归系数)的值在splot中绘制一张 map ,使用:

brk1 = c(-130,  -5,    0,    5,  311)
spplot(distVDS_betas,zcol="b_all",at=brk1) 

我可以通过另一个数据列t_all(每个回归系数的t值)绘制类似的图:

brk2 = c(0,  1.645,    1.96,    53)
spplot(distVDS_betas,zcol="t_all",at=brk2) 

我想要做的是(A)用divergent的 colored颜色 模式绘制beta系数(比如橙红色上升fr/零,蓝色紫色下降fr/零),然后(B)用t值使 colored颜色 饱和.有人能帮我做这件事吗?

我知道ssplot2已经过时了,我应该转到ggplot2,我很想学习如何使用它.已try 按照代码here进行操作.但是,当我try 运行此代码时:

ggplot(data = distVDS_betas) +
  geom_sf()

我得到的错误是:stat_sf() requires the following missing aesthetics: geometry.

所以我甚至不确定如何从ggplot2+sf开始.

推荐答案

绘图的问题与您的数据有关-您的ggplot代码是正确的.

在下面的示例中,请注意使用了world对象,其中class(world)sf.

这意味着,当您判断world对象时,world$geometry提供了ggplot用于构建映射的信息.

在您的代码中,distVDS_betas$geometry不存在,因为您的数据可能不是sf对象.这会导致您看到的错误,并阻止您打印.

你有两个 Select :

  1. 将数据转换为类sf的对象
  2. 使用适用于您对象的类的不同的geom_*

1. Convert to ‘sf’

这是最简单的解决方案.

library(sf)
library(ggplot2)

distVDS_betas <- st_as_sf(distVDS_betas)

ggplot(data = distVDS_betas) +
    geom_sf()

2. Use different geom_*

此解决方案取决于数据和特定列的 struct .这只是一个例子.欲了解更多信息,请查看here

distVDS_betas |>
    ggplot() |>
    geom_raster(aes(x = x, y = y))

R相关问答推荐

在R底座中更改白天和夜晚的背景 colored颜色

RStudio中相关数据的分组箱形图

R s iml包如何处理语法上无效的因子级别?'

为什么当用osmdata映射R时会得到相邻状态?

根据日期从参考帧中创建不同的帧

使用外部文件分配变量名及其值

如何从容器函数中提取conf并添加到ggplot2中?

如何在ggplot2中绘制具有特定 colored颜色 的连续色轮

随机森林的带Shap值的蜂群图

我如何使用循环来编写冗余的Rmarkdown脚本?

如何判断代码是否在R Markdown(RMD)上下文中交互运行?

如何在条形图中的x和填充变量中包含多个响应变量?

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

TidyVerse中长度不等的列结合向量

如何使用包metaviz更改标签的小数位数?

使用函数从R中的列中删除标高

如果满足条件,则替换列的前一个值和后续值

使用其他DF中的文件名将列表中的每个元素保存到文件中

如何在不使用SHINY的情况下将下拉滤镜列表添加到ggploy?

在不带max()的data.table中按组查找最后一个元素