You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

关键改动说明

  1. 小提琴图边缘处理

    • 直接添加linewidth=0参数,彻底移除边缘线条,实现干净的填充效果;
    • 若需要低透明度同色边缘,可替换为以下参数:
      edgecolor=[(r,g,b,0.3) for r,g,b in palette_colors], linewidth=1
      
      其中0.3是透明度值,可根据需求调整。
  2. 箱线图颜色匹配

    • 先通过sns.color_palette获取与分类数量对应的调色板颜色列表;
    • 给sns.boxplot传入palette=palette_colors,让每个分类的箱线边缘自动匹配小提琴图的填充色;
    • 中位数线设置为白色是为了在彩色边缘上更清晰,可根据需求修改为其他颜色。

内容的提问来源于stack exchange,提问作者RBG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:15:44