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

Jupyter中添加vlines后seaborn.kdeplot曲线无法正常显示问题

问题根因
  • 核心错误:代码中plt.vlines的ymax参数硬编码为1,而KDE曲线的Y轴是概率密度值,针对你提供的数十万量级的数据集,计算出的密度值远小于1,硬设ymax=1会将Y轴范围强行拉伸到0~1区间,KDE曲线会紧贴X轴无法观察到。
  • 潜在适配问题:你提到全量数据集跨度接近6个数量级(最小值8e+01、最大值6e+07),线性X轴下极端值会将KDE曲线拉得极扁,也会导致曲线不清晰。
修正方案

直接删除硬编码的ymax=1,改为动态读取KDE绘制后的Y轴上限来设置竖线高度,大跨度数据集可开启对数X轴优化显示,修正后代码如下:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import mode

plt.figure(figsize=(7,5))
# 绘制KDE并获取轴对象
ax = sns.kdeplot(dataset, shade=True)
# 读取当前KDE的Y轴最大值作为竖线的高度上限
y_max = ax.get_ylim()[1]

plt.vlines(x=np.mean(dataset), ymin=0, ymax=y_max, color='blue', linestyle='--')
plt.vlines(x=np.median(dataset), ymin=0, ymax=y_max, color='brown', linestyle='--')
plt.vlines(x=mode(dataset)[0][0], ymin=0, ymax=y_max, color='red', linestyle='--')

plt.legend(['Dataset', 'Mean', 'Median', 'Mode'], fontsize=12)
# 全量数据集绘图时可取消下方注释开启对数X轴,优化极端值下的显示效果
# plt.xscale('log')
plt.show()
效果验证

使用你提供的25条测试数据运行上述代码,可正常渲染KDE曲线,三条集中趋势线高度会自动适配曲线高度,不会出现Y轴拉伸导致的曲线不可见问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:39:03