当前位置:首页>python>Python绘制高颜值配对云雨图

Python绘制高颜值配对云雨图

  • 2026-09-02 19:38:02
Python绘制高颜值配对云雨图

代码绘制成果展示

配对雨云图,将半小提琴图、箱线图和散点图结合在一起,以全面展示同一组测试对象在处理前和处理后两个不同条件下的数据变化。图表的横坐标代表比较的两个阶段,纵坐标代表具体的数值大小。在每个阶段的视觉呈现中,外侧的阴影部分描绘了数据的概率密度分布;中间带有黑色粗边框的矩形反映了包含中位数、四分位数以及由白色五角星代表的平均值等核心统计特征;而紧挨着的圆点则代表了具体个体样本数据。最核心的特征是两组散点之间的浅色连线,它们一一对应了同一个体在两个阶段的数值变化轨迹。通过观察这些绝大多数呈现向上倾斜的连线,我们可以得出结论:无论是整体的数据分布水平、平均值,还是绝大多数个体的具体表现,都出现了明显的上升与增长。
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport matplotlib.colors as mcolorsfrom matplotlib.collections import LineCollection

第二部分

颜色库的设置以及配色方案的选择
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: {'pre_box': '#848484', 'pre_cloud': '#DCDCDC', 'pre_edge': '#404040', 'post_box': '#D45E60', 'post_cloud': '#FADCD9', 'post_edge': '#8B2323', 'line': '#D45E60'},}scheme_id=26  #要使用的配色方案theme = COLOR_SCHEMES.get(scheme_id, COLOR_SCHEMES[1])  #提取配色方案

第三部分

绘图函数:创建画布,提取每一个元素的配色,设置位置变量
# =========================================================================================# ======================================3.绘图函数======================================# =========================================================================================def plot_paired_raincloud(pre_data, post_data):    #创建画布    fig, ax = plt.subplots(figsize=(6.5, 6), dpi=120)    color_pre_box = theme['pre_box']  #左侧箱线图和散点的颜色    color_pre_cloud = theme['pre_cloud']  #左侧小提琴图的颜色    color_pre_edge = theme['pre_edge']  #左侧散点边缘的颜色    color_post_box = theme['post_box']  #右侧箱线图和散点的颜色    color_post_cloud = theme['post_cloud']  #右侧小提琴图的颜色    color_post_edge = theme['post_edge']  #右侧散点边缘的颜色

第四部分

绘图函数:绘制小提琴图
    #绘制左侧小提琴图    v1 = ax.violinplot(pre_data, positions=[pos_pre_v], showextrema=False)    # 绘制右侧小提琴图    v2 = ax.violinplot(post_data, positions=[pos_post_v], showextrema=False)    #遍历右侧小提琴图的多边形填充实体    for b in v2['bodies']:        b.get_paths()[0].vertices[:, 0] = np.clip(b.get_paths()[0].vertices[:, 0], pos_post_v, np.inf)  #裁剪小提琴图的左半边        b.set_facecolor(color_post_cloud) #设置填充色        b.set_alpha(0.5)  #透明度

第五部分

绘图函数:绘制箱线图
    #箱线图中位数线的样式    medianprops = dict(color='black', linewidth=2.5)    #箱线图须线的样式    whiskerprops = dict(color='black', linewidth=2.5)    #均值标记的样式    meanprops = dict(marker='*',  #形状                     markerfacecolor='white',  #内部填充                     markeredgecolor='black',  #边框颜色                     markersize=14,  #大小                     markeredgewidth=1.5)  #边框线宽    #左侧箱体的样式    boxprops_pre = dict(facecolor=color_pre_box,  #填充色                        color='black',  #边框颜色                        linewidth=2.5)  #边框线宽

第六部分

绘图函数:绘制散点图
    n_samples = len(pre_data)  # 计算传入数据列表的样本数量    np.random.seed(123)  #随机数种子,确保每次运行图表中的抖动散点位置完全一致    ax.scatter(jitter_pre,  #X坐标               pre_data,  #Y坐标               color=color_pre_box,  #填充颜色               alpha=0.9,  #透明度               s=45,  #大小               zorder=4,  #层级               edgecolors=color_pre_edge,  #边缘轮廓颜色               linewidths=1.5)  #边缘线条宽度    #绘制右侧散点图    ax.scatter(jitter_post, #X坐标               post_data,  #Y坐标               color=color_post_box,  #填充颜色               alpha=0.9, #透明度               s=45,    #大小               zorder=4, #层级               edgecolors=color_post_edge, #边缘轮廓颜色               linewidths=1.5)   #边缘线条宽度

第七部分

绘图函数:绘制渐变色连接线
    # 创建从左侧颜色过渡到右侧颜色的线性渐变色映射表    cmap_gradient = mcolors.LinearSegmentedColormap.from_list("grad", [color_pre_box, color_post_box])    # 循环遍历所有的样本数据点,用于绘制一一对应的连线    for i in range(n_samples):        x_vals = np.linspace(jitter_pre[i], jitter_post[i], 50)  #在左侧散点X坐标和右侧散点X坐标间等距生成50个插值点        # 给这一系列短线段赋予0到1的归一化数值,从而激活并映射渐变色效果        lc.set_array(np.linspace(0, 1, len(segments)))        #添加到轴中        ax.add_collection(lc)

第八部分

绘图函数:坐标轴设置、刻度设置以及绘图结果保存
    ax.set_xticks([pos_pre_b, pos_post_b])  #设置X轴的主刻度位置    ax.set_xticklabels(['Before treatment', 'After treatment'], fontsize=20)  #x轴标注    ax.set_xlim(-0.4, 1.4)  #X轴的显示区间    ax.set_ylabel('Values', fontsize=20)  #Y轴的标题    ax.spines['top'].set_visible(False)  #隐藏顶部的边框线    ax.spines['right'].set_visible(False)  #隐藏右侧的边框线    ax.spines['bottom'].set_linewidth(2.5)  #底部的边框线加粗    ax.spines['left'].set_linewidth(2.5)  #左侧的边框线加粗

第九部分

执行部分
# =========================================================================================# ======================================4.执行部分======================================# =========================================================================================if __name__ == '__main__':    excel_filename = r'data.xlsx'  #原始数据路径    df = pd.read_excel(excel_filename)  #读取数据    data_pre = df['Before treatment'].values  #左侧数据    data_post = df['After treatment'].values  #右侧数据    #绘图    plot_paired_raincloud(data_pre, data_post)

如何应用到你自己的数据

1.设置配色方案:

scheme_id=26  #要使用的配色方案

2.设置x轴标注:

ax.set_xticklabels(['Before treatment', 'After treatment'], fontsize=20)  #x轴标注

3.设置绘图结果的保存地址:

plt.savefig(fr'paired_raincloud_plot{scheme_id}.png', dpi=300, bbox_inches='tight')

4.设置原始数据的文件路径:

excel_filename = r'data.xlsx'  #原始数据路径

5.读取左侧数据:

data_pre = df['Before treatment'].values  #左侧数据

6.读取右侧数据:

data_post = df['After treatment'].values  #右侧数据

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

公众号中的所有所有的免费代码都已经下架了,都并入到付费部分里了,付费合集代码和数据的购买通道已经开通,全部合集100元,后续将会持续更新,决定购买请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释,购买前请确保真的需要!!!

最新文章

随机文章