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

如何用Python Anaconda同图绘制全量数据直方图和real变量的KDE曲线

问题原因

你当前的报错是因为代码中重复给hist参数赋值,同时seaborn的displot是Figure级接口,不支持直接传入两个不同数据集同时绘制不同类型的图表,因此无法直接用单条displot语句实现你的需求。

正确实现方案

推荐使用seaborn的Axes级绘图接口(histplot+kdeplot)实现叠加效果,代码更灵活可控:

import seaborn as sns
from matplotlib import pyplot as plt
import pandas as pd

# 读取数据(路径前加r避免转义字符报错)
ors = pd.read_excel(r'C:\Data\Book1.xlsx')
# 筛选real分组子集
real_subset = ors[ors['Simulation'] == 'real']

sns.set_style('white')
# 创建画布
fig, ax = plt.subplots(figsize=(8, 5))
# 绘制全量数据直方图,stat='density'保证和KDE纵轴尺度一致
sns.histplot(x='Scores', data=ors, ax=ax, stat='density', alpha=0.6)
# 叠加real分组的红色KDE曲线
sns.kdeplot(x='Scores', data=real_subset, ax=ax, color='red', linewidth=3, label='real KDE')
# 添加图例
plt.legend()
plt.show()

如果你坚持要使用displot实现,也可以通过获取displot返回的坐标轴对象叠加KDE:

sns.set_style('white')
# 先用displot绘制全量数据直方图
g = sns.displot(x='Scores', data=ors, stat='density', alpha=0.6)
# 在displot的坐标轴上叠加KDE曲线
sns.kdeplot(x='Scores', data=real_subset, ax=g.ax, color='red', linewidth=3, label='real KDE')
plt.legend()
plt.show()

注意事项

  • 读取本地文件的路径前建议加原始字符串标识r,避免路径中\开头的转义字符引发读取错误
  • 直方图设置stat='density'是为了将默认的计数纵轴转换为密度尺度,和KDE曲线的输出尺度匹配,保证叠加效果合理

内容的提问来源于stack exchange,提问作者Iván

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:00:01