我的问题是,我有一个 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)
它是否回答了您的问题?
关于r - 是否可以在带有 ggplot geom_sf 的 map 中使用单独的固定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995362/