Raincloud图优化:调整小提琴图边缘与箱线图颜色
解决方案:调整Raincloud图的箱线图颜色与小提琴图样式
核心改动目标
- 让箱线图的线条颜色与对应分类的小提琴图填充色一致
- 移除小提琴图的边缘线条(或设置为同填充色低透明度)
修改后完整代码
import seaborn as sns import matplotlib.pyplot as plt import ptitprince as pt import pandas as pd # 加载数据(请替换为你的实际数据加载逻辑) T = pd.read_csv("你的数据文件路径") f, ax = plt.subplots(figsize=(14,10)) # 获取与分类数量匹配的inferno调色板颜色 palette_colors = sns.color_palette('inferno', len(T['atlas'].unique())) # 绘制半小提琴图:移除边缘线条 ax = pt.half_violinplot( x="atlas", y="voxel_count", data=T, palette='inferno', scale="area", inner=None, linewidth=0 # linewidth=0直接消除边缘 ) # 绘制散点图(保留原参数) ax = sns.stripplot( x="atlas", y="voxel_count", data=T, jitter=1, edgecolor="white", palette='inferno', size=8, alpha=0.8 ) # 绘制箱线图:匹配小提琴图颜色 ax = sns.boxplot( x="atlas", y="voxel_count", data=T, width=.15, zorder=10, showcaps=True, boxprops={'facecolor':'none', "zorder":10}, showfliers=True, palette=palette_colors, # 绑定调色板,让箱线边缘匹配对应分类颜色 whiskerprops={'linewidth':2, "zorder":10}, medianprops={'color': 'white'} # 白色中位数线提升辨识度,可按需调整 ) plt.show()
关键改动说明
小提琴图边缘处理
- 直接添加
linewidth=0参数,彻底移除边缘线条,实现干净的填充效果; - 若需要低透明度同色边缘,可替换为以下参数:
其中edgecolor=[(r,g,b,0.3) for r,g,b in palette_colors], linewidth=10.3是透明度值,可根据需求调整。
- 直接添加
箱线图颜色匹配
- 先通过
sns.color_palette获取与分类数量对应的调色板颜色列表; - 给
sns.boxplot传入palette=palette_colors,让每个分类的箱线边缘自动匹配小提琴图的填充色; - 中位数线设置为白色是为了在彩色边缘上更清晰,可根据需求修改为其他颜色。
- 先通过
内容的提问来源于stack exchange,提问作者RBG
相关产品推荐
相关产品推荐

