【发布时间】:2021-03-06 22:10:30
【问题描述】:
所以我有一个如下所示的频率分布图:
我需要与 y 值的峰值对应的 x 值。 如何获取绘图代码?
seaborn.distplot('TheSeries',bins = 30, ax=axes[0][1])
有人可以解释一下我如何才能获得这种情况和类似情况的相应值吗?
【问题讨论】:
标签: python pandas numpy matplotlib seaborn
所以我有一个如下所示的频率分布图:
我需要与 y 值的峰值对应的 x 值。 如何获取绘图代码?
seaborn.distplot('TheSeries',bins = 30, ax=axes[0][1])
有人可以解释一下我如何才能获得这种情况和类似情况的相应值吗?
【问题讨论】:
标签: python pandas numpy matplotlib seaborn
您可以从ax.lines[-1]中提取kde曲线的坐标,并使用np.argmax()查找曲线的模式。
请注意,在最新的 seaborn 版本中,distplot 已被弃用。这里histplot 和kde=True 将是它的替代品。
from matplotlib import pyplot as plt
import numpy as np
import seaborn as sns
samples = np.random.randn(300) ** 2 * 50
ax = sns.histplot(samples, bins=30, kde=True, color='skyblue')
kdeline = ax.lines[0]
xs = kdeline.get_xdata()
ys = kdeline.get_ydata()
mode_idx = np.argmax(ys)
ax.vlines(xs[mode_idx], 0, ys[mode_idx], color='tomato', ls='--', lw=2)
plt.show()
【讨论】:
ax.set_xlim(-1, 300)?
x 根本不应该改变,y 会稍微高一点(kde 的积分总和为 1,所以更少的值会多一点每个剩余值的权重)。平均值和中位数会有所变化,具体取决于离群值的距离和数量。要计算置信区间,您可能不应该删除异常值(除非您确信它们与测量误差有关)。