使用R包bayesplot的mcmc_areas()时修改特定后验分布的颜色
用bayesplot的mcmc_areas自定义特定参数后验分布配色方案
mcmc_areas()返回的是标准ggplot2对象,你可以直接叠加ggplot2的配色映射函数实现局部配色修改,不需要调整bayesplot的全局配色设置。
方案1:为单个指定参数绑定专属颜色
以将cyl参数后验分布设为蓝色、其余参数保持红色为例,实现代码如下:
# 加载依赖包 library(bayesplot) library(ggplot2) # 示例数据:替换为你自己的MCMC draws对象 x <- example_mcmc_draws(params = c("cyl", "disp", "hp", "drat")) # 生成配色向量:默认全红,仅cyl设为蓝色 all_params <- dimnames(x)$parameter fill_colors <- setNames(rep("red", length(all_params)), all_params) fill_colors["cyl"] <- "blue" # 绘图并叠加自定义配色 mcmc_areas(x) + scale_fill_manual(values = fill_colors)
如果需要修改分布的边界线颜色,把scale_fill_manual替换为scale_color_manual即可。
方案2:按参数分组统一配色
如果需要按参数分组分配不同颜色,可先建立参数与分组的映射关系,再生成对应配色向量:
# 建立参数-分组映射 group_map <- c( "cyl" = "发动机参数", "hp" = "发动机参数", "disp" = "底盘参数", "drat" = "底盘参数" ) # 按分组分配颜色 group_color_rule <- c("发动机参数" = "blue", "底盘参数" = "red") fill_colors <- group_color_rule[group_map[all_params]] # 绘图 mcmc_areas(x) + scale_fill_manual(values = fill_colors)
注意事项
如果出现颜色与参数不匹配的情况,可在
mcmc_areas()中添加sort = FALSE参数关闭默认的参数自动排序,保证参数顺序和配色向量的命名顺序一致。
内容的提问来源于stack exchange,提问作者Beka Stiling
相关产品推荐
相关产品推荐

