r - 是否可以在带有 ggplot geom_sf 的 map 中使用单独的固定颜色

标签 r ggplot2 colors sf

我的问题是,我有一个 sf 对象,我想用 ggplot 映射它并用因子变量的颜色填充县。 我为每个因子级别定义了一种颜色,即使对数据帧进行子集化也应该固定该颜色。

我的问题是:我在图例中看到我的因素具有正确的颜色,我看到了我的 map ,但县没有填充任何颜色。

我的测试数据集在这里: https://wolke.netzbegruenung.de/s/wPfNEPrSkcsLaHX

第一步:

我定义了一个指标变量,它位于 0 和任何正值之间。高于 1 的值令人震惊。正常值低于 0.3。为了预测 future 会发生什么,我将用分类索引变量的颜色绘制我的县。因此,我用以下颜色定义了一个 data.frame:

brk <- c(0,0.1,0.5,0.6,0.8,0.9,1,Inf)
col <- c("greenyellow","chartreuse4","gold",
         "darkgoldenrod1","orange","orangered3","red")
lab <- c("up to 0.1","up to 0.3","up to 0.6",
         "up to 0.8","up to 0.9","up to 1","1 and more")

dfcol <-cbind.data.frame(lab,col) %>%
  mutate(lab = factor(lab, levels = lab)

第二步:

我用这段代码作图:

ggplot()+
  geom_sf(data = dfgeo,aes(fill = lab)) +
  scale_fill_manual(values = col,
                    limits = brk[1:7],
                    labels = lab ) +
  theme_void()

结果是:

我在图例中看到了我的因子 Variable lab。

我看到我的 map 上有我感兴趣的所有县的边界。

但是这些县并没有填充我分配给因子变量 lab 的任何颜色。

我的错误是什么?

感谢您的帮助!

最佳答案

一种可能的解决方案是完全合并两个数据框,以便显示所有值:

library(dplyr)
DF <- full_join(dfgeo, dfcol)

library(ggplot2)
ggplot(data = DF,aes(fill = lab))+
  geom_sf() +
  scale_fill_manual(values = col)

enter image description here

它是否回答了您的问题?

关于r - 是否可以在带有 ggplot geom_sf 的 map 中使用单独的固定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995362/

相关文章:

colors - VS Code 智能感知没有向我显示十六进制值颜色的颜色框

javascript - 基于 "check box"在 HTML+ JS 中选择数字和序列重新着色文本

r - ggplot geom_smooth lm中带宽的含义

r - 使用位置减淡调整中心的文本

r - R 中的 qplot 和抗锯齿

r - ggplotly 无法在 Shiny 的应用程序中工作,绘图未显示

google-apps-script - 如何使用 Google Apps 脚本将一张工作表中的值的背景颜色设置为另一张工作表中具有匹配值的单元格?编辑部分添加

r - 在R中,如何绘制到内存缓冲区而不是文件中?

r - ggmap "dsk"速率限制

r - 抓取不同网站中元素数量不断变化的自由文本