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

如何在Seaborn JointGrid边际图中同时展示两个数据集的分布

解决两个数据集在JointGrid中边际分布重叠覆盖的问题

要同时展示两个数据集的边际分布用于对比,核心是给第二个数据集的边际分布设置透明度(alpha),避免直接覆盖第一个数据集的分布。以下是具体实现代码:

import seaborn as sns
import matplotlib.pyplot as plt

# 初始化JointGrid,指定第一个数据集的x、y字段
g = sns.JointGrid(data=data1, x="observed", y="predicted")

# 绘制第一个数据集的散点图和边际直方图
g.plot_joint(sns.scatterplot, color="#1f77b4", label="数据集1")
g.plot_marginals(sns.histplot, color="#1f77b4", alpha=0.7, label="数据集1")

# 添加第二个数据集的散点图(红色)
g.ax_joint.scatter(data=data2, x="observed", y="predicted", color="#ff4b5c", label="数据集2")

# 绘制第二个数据集的边际直方图,设置透明度让两个分布重叠可见
# X轴边际
g.ax_marg_x.hist(data2["observed"], color="#ff4b5c", alpha=0.5, label="数据集2")
# Y轴边际(修正你之前的错误:应该用predicted字段而非observed)
g.ax_marg_y.hist(data2["predicted"], color="#ff4b5c", alpha=0.5, orientation="horizontal", label="数据集2")

# 添加图例区分两个数据集
g.ax_joint.legend()
g.ax_marg_x.legend()
g.ax_marg_y.legend()

plt.show()

关键细节说明:

  1. 修正代码错误:你之前绘制Y轴边际分布时误用了observed字段,改为predicted才能对应Y轴的预测值分布。
  2. 透明度的作用:设置alpha=0.5让两个数据集的边际分布重叠区域半透明显示,既不会互相遮挡,又能直观对比分布差异。
  3. 图例辅助区分:给每个绘图元素添加label并调用legend(),可以明确区分两个数据集的对应图形。

如果偏好核密度估计图(KDE)代替直方图,也可以替换成以下写法:

# 替换边际分布为KDE图
g.ax_marg_x.kdeplot(data2["observed"], color="#ff4b5c", alpha=0.7, label="数据集2")
g.ax_marg_y.kdeplot(data2["predicted"], color="#ff4b5c", alpha=0.7, vertical=True, label="数据集2")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:47:23