ggdist绘制点区间图时scale_interval_color_discrete不生效问题咨询
问题原因
- 缺少
ggdist包加载步骤:stat_pointinterval是ggdist包提供的函数,未加载会直接报错 - 核心问题:未在ggplot美学映射
aes()中将interval_color绑定到区间宽度内置变量.width,ggdist的颜色标度无法匹配到对应离散分组,因此自定义色值不生效 .width默认为数值型变量,需要转为因子才会匹配离散颜色标度scale_interval_color_discrete的设置
修正后可运行代码
library(ggplot2) library(dplyr) library(scales) library(distributional) library(tibble) library(ggdist) # 新增:加载ggdist包 data(iris) df <- as_tibble(iris) ggplot(df)+ aes(y=Species, x=Sepal.Length, interval_color = factor(.width)) + # 新增:将区间颜色映射到宽度因子 stat_pointinterval(.width = c(0.9,0.8,0.6,0.5), shape=21, point_fill="blue", point_color="red", point_size=4, interval_alpha=0.9)+ scale_interval_color_discrete(values = c("grey","yellow","blue","red"))
补充说明
- 传入
values的颜色默认按.width从大到小的顺序匹配,也就是最宽的0.9区间对应grey,次宽的0.8对应yellow,以此类推 - 如果需要避免顺序错位,可以显式指定键值对:
values = c("0.9"="grey", "0.8"="yellow", "0.6"="blue", "0.5"="red") - 如需同时自定义不同宽度区间的线条粗细,可配合
scale_interval_size_discrete实现
内容的提问来源于stack exchange,提问作者ChenKang
相关产品推荐
相关产品推荐

