
©[悠悠智汇笔记] 版权所有
🙏请尊重劳动成果,守护每一份劳动心血;⚖️未经授权,不得以为任何方式转载、摘编或抄袭。🔄转载合作请后台联系授权,侵权必究。

当你面对多组数据对比,既担心只看平均值会被极端个案带偏,又觉得光看箱线图太枯燥、漏掉了分布细节时,这图就是救星。它巧妙地把数据拆解成左右两部分:左边的“雨滴”是原始散点,让你看清每一个真实样本的落点,谁是那个离群的“显眼包”根本藏不住;右边的“云朵”则是核密度曲线,一眼就能看出数据是像山峰一样集中,还是像波浪一样两极分化。中间再加个箱线图或小提琴图收腰,直接把中位数和四分位间距定死,信息量瞬间拉满。
这种图最适合放在那些需要“深挖差异”的场景里,比如对比不同产品的用户评分,或者看不同实验组的效果反馈。它不仅能告诉你哪组的表现更好,还能告诉你这组的表现为什么稳、那组的波动为什么大。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 import numpy as npimport pandas as pdimport plotly.graph_objects as go# ======================# 用户配置# ======================read_custom_data = True # True=读取本地 data.csv;False=生成示例随机数据# 配色(线色与填充色一一对应)colors = ["#4f7942", "#c65f0a", "#a03530", "#5e4c8c", "#20648a"]fill_colors = ["#b0d1a6", "#f5c5a0", "#e7a39a", "#b1a5c9", "#a0d8ef"]# ======================# 读取 / 生成数据# ======================data_df = pd.read_csv("data.csv")# 防御:颜色数要与列数匹配if len(colors) < data_df.shape[1] or len(fill_colors) < data_df.shape[1]: raise ValueError("颜色数量与数据列数量不匹配,请补齐 colors / fill_colors。")# ======================# 创建图表# ======================fig = go.Figure()x_data = list(data_df.columns)y_data = [data_df[col].values for col in data_df.columns]for xd, yd, cls, fcls in zip(x_data, y_data, colors, fill_colors): # 半小提琴图(上半部,柔和一些) fig.add_trace( go.Violin( y=yd, name=xd, points=False, width=0.9, fillcolor=cls, line_color=cls, opacity=0.2, side="positive" ) ) # 箱线图(叠加在同一类别上) fig.add_trace( go.Box( y=yd, name=xd, boxpoints="all", width=0.2, whiskerwidth=0.4, jitter=1, pointpos=-2.0, line=dict(color=cls, width=4), fillcolor=fcls, showlegend=False, opacity=0.7, marker_color=fcls, marker_size=8, marker_line_color=cls, marker_line_width=2, boxmean="sd", notched=True ) )# ======================# 布局# ======================fig.update_layout( yaxis=dict(title="Y值"), width=1200, height=750, showlegend=False, template="plotly_white")fig.write_html("云雨图.html")fig.show()
🌿 今日的分享就到这里啦~如果这些内容有为你带来帮助,欢迎轻点右下角的【👍赞】和【👀在看】,也欢迎分享给更多需要的人,感恩~
THE
END


数据怎么获取?
点击关注后,后台回复关键词:
2026_map_009可直接获取完整的示例数据和代码
如有帮助,您的点赞、评论、转发是我持续创作的动力~

