我正在尝试绘制全局数据异常(降水,温度等)的地图,并且需要使用不同的调色板。我的代码可以与scale_color_viridis
一起很好地运行,但是不能轻易地与scale_color_brewer
一起转换。我想使用RdBu
分散调色板。
我尝试在函数vars
中提供值scale_color_brewer
并使用scale_fill
brewer,但我想继续使用到目前为止的geom_points
进行绘图。 / p>
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 用多种颜色返回您要的调色板
答案 0 :(得分:0)
RdBu
是离散的调色板,但是您尝试将其用于连续数据。
请参阅this documentation并改用scale_colour_gradient()
。
答案 1 :(得分:0)
您可以对连续值进行分箱/粗粒度化,为它们提供一个离散有序的值,以映射到您选择的 Brewer 调色板中包含的离散 8 到 12 种颜色。
但我认为您正在寻找的解决方案是使用 ggplot2 中已经包含的 scale_color_distiller()
或 scale_fill_distiller()
函数“提炼”它们,有效地将它们转换为连续的色标。在一些规范位置提供了文档和示例: