r - 如何使用 scale_color_brewer 修复“提供给离散比例的连续值”
问题描述
我正在尝试制作全局数据异常(沉淀、温度等)的地图,并且需要使用不同的调色板。我有运行良好的代码,scale_color_viridis
但它不容易转换为scale_color_brewer
. 我想使用RdBu
发散调色板。
我已经尝试vars
在函数中提供值scale_color_brewer
并使用scale_fill
brewer 但我想继续使用geom_points
到目前为止的绘图。
titletext <- paste(VAR, "Response")
expand.grid(lon, lat) %>%
rename(lon = Var1, lat = Var2) %>%
mutate(lon = ifelse(lon > 180, -(360 - lon), lon),
vars = as.vector(global.array)) %>%
ggplot() +
geom_point(aes(x = lon, y = lat, color = vars),
size = 2.0) +
borders("world", colour="black", fill=NA) +
scale_color_brewer(type="div", palette="RdBu")+
#scale_color_viridis(na.value="white",name = VAR) +
theme(legend.direction="vertical", legend.position="right",
legend.key.width=unit(0.4,"cm"), legend.key.heigh=unit(2,"cm")) +
coord_quickmap() + ggtitle(titletext)
错误信息是
错误:提供给离散刻度的连续值
和
警告消息:1:在 RColorBrewer::brewer.pal(n, pal) 中:n 太大,调色板 RdBu 允许的最大值为 11 返回您要求的调色板,使用那么多颜色
解决方案
您可以对连续值进行分箱/粗粒度处理,为它们提供离散有序值,以映射到您选择的 Brewer 调色板中包含的离散 8 到 12 种颜色。
但我认为您正在寻找的解决方案是使用 ggplot2 中已经包含的scale_color_distiller()
orscale_fill_distiller()
函数“蒸馏”它们,有效地将它们转换为连续色标。一些规范位置提供了文档和示例:
推荐阅读
- android - 无法解析方法 getParentFragmentManager
- kubernetes - How to write instant queries in prometheus adapter to get custom metric value from prometheus operator?
- django - 如何将模型设置为 Django 中 OneToOne 字段的默认值
- python - 将“对象”类型的数据框列转换为 set()
- python - 为什么 python 的 sum() 需要 start 参数?
- python-3.x - 根据条件替换 Python 数据帧的子集
- ios - Flutter Flavors:找不到 Generated.xcconfig
- r - 找到从一个顶点到同一个顶点的路径
- verilog - 如何编辑和测试 Verilog 网表
- function - 用numpy sum替换与两个变量的函数内部参数相关的for循环