为具有连续值的渐变图创建 R ggplot2 离散调色板
Posted
技术标签:
【中文标题】为具有连续值的渐变图创建 R ggplot2 离散调色板【英文标题】:Create R ggplot2 discrete colour palette for gradient map with continuous values 【发布时间】:2021-02-22 00:08:51 【问题描述】:大家好! 我真的需要一些帮助才能在连续地图上创建离散图例。
这是我目前所拥有的:Here you see probability of occurrence of a plant species accordingly to 4 statistical algos. In the legend you see "0,1,2,3,4", but legend values are categorical, but legend colour palete stills works under continuous values, with colours not properly separeted.
但是,我想要的是一个分类图例,根据图例中的每个类别从地图中获取连续值,旨在清楚地表明算法预测的一致性,没有连续的比例。
图 2 你看到了完美的地图,但我想用 ggplot2 来制作它:Here I can clearly indicate in the discrete legend the colors accordingly to the 4 statistical algos.
对于第二张地图,我使用了以下代码:
breakpoints <- c(-125,125,375,625,875,1125)
colors <- c(grey(seq(0.9,0.7,-0.2)),gcolors(3))
a.arg <- list(at=seq(0,1000,length.out=5), labels=c("0","1","2","3","4"),cex.axis=1.5)
l.arg <- list(text="Vote",side=2, line=0.5, cex=1.5)
par(mar=c(0,0,0,r.mar),cex=1.4)
plot(mymap,col=colors,ext=study_area, breaks=breakpoints,
legend.width=1.5,legend.shrink=0.6,legend.mar=7,
axis.args=a.arg,legend.arg=l.arg,
axes=FALSE, box=FALSE, zlim=c(0,1000))
而且效果很好!
但是,在 ggplot2 下我使用的是这段代码:
#Color scales pres
col_scale_var_test_pres <- scale_fill_gradientn(
colours = c(grey(c(0.90,seq(0.9,0.7,-0.2))),gcolors(3)), # colour palete
na.value="transparent",
values=rescale(seq(0,1000),0,1000),
limits=c(0,1000),
breaks= seq(0,1000,by=250), # if one algo predict species occurrence it counts 250, two algos
#(500), ### three (750), four (1000)
labels= c(0,1,2,3,4)
)
b1 <- plot_anomaly_2(r= species_map, label="(b)",title="") + col_scale_var_test_pres
我已经尝试过使用#scale_fill_manual、#scale_fill_gradientn 等,并且还搁置了这个问题(非常相似): R ggplot2 discrete colour palette for gradient map。 但我仍然无法解决这个问题。
任何帮助和建议将不胜感激!
【问题讨论】:
【参考方案1】:下一次可重现的代码可能会更有用。假设您想从mymap
数据帧中绘制data
,那么以下代码可能会有所帮助:
library(tidyverse)
library(ggthemes)
mymap %>%
mutate(value = cut(data,
breaks = c(-125,125,375,625,875,1125), right = FALSE,
labels = c("0", "1", "2", "3", "4", "5"))) %>%
ggplot(., aes(x = long, y = lat, group = group, fill = value)) +
geom_polygon(col = "grey") + scale_fill_brewer(palette = "YlGnBu", direction = 1) +
coord_fixed(xlim = c(-130, 1200)) + theme_map() +
theme(legend.position = "bottom")
【讨论】:
以上是关于为具有连续值的渐变图创建 R ggplot2 离散调色板的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩离散色彩色彩梯度)实战
R语言ggplot2可视化:可视化人口金字塔图直方图(堆叠直方图连续变量堆叠直方图离散变量堆叠直方图)密度图箱图(添加抖动数据点tufte箱图多分类变量分组箱图)小提琴图
R语言ggplot2可视化:自定义设置连续变量图例(legend)宽度(width)自定义设置连续变量图例位置(position)自定义设置连续变量图例连续渐变