【问题标题】:matplotlib histogram with line带线的 matplotlib 直方图
【发布时间】:2017-12-06 03:31:03
【问题描述】:
import matplotlib.image as mpimg
from scipy.spatial import distance
import matplotlib.patches as mpatches
import pylab
import matplotlib.mlab as mlab
import scipy.stats as ss

fig = plt.figure(num=None, figsize=(9, 7), facecolor='w', edgecolor='k')   
ax = fig.add_subplot(111)
plt.hist(h, bins=30, normed=True)    #h is the data

现在我的情节是这样的:

我想添加一条趋势线来反映直方图。以反映每个 bin 的峰值。所以尝试了 fuglede 的建议,使用 seaborn,我得到了一些非常奇怪的东西。

我不知道为什么突然进口了 seaborn,我的情节出现了那些奇怪的灰色网格。我正在使用 Sypder 顺便说一句。 其次,我想要一个平稳的喜欢,而不是像我现在的那样只是上下波动。

【问题讨论】:

  • 您想如何计算“趋势线”?某些功能适合数据?绘制每个箱的峰值?请更新您的问题。
  • 最初,我将它拟合成高斯,但被拒绝了。我被告知只绘制一个直方图,实际上趋势线应该反映每个 bin 的峰值。
  • 然后使用从plt.hist() 返回的值在另一行中绘制峰值。或者按照@fuglede 回答中的建议,比较合理。
  • 谢谢,我试过seaborn,但很奇怪。
  • Seaborn 在导入时会做很多样式,这就是网格线的来源。查看seaborn.set_style() 了解如何更改。至于为什么 KDE 如此“坎坷”,那是因为内核尺寸太小了。这由 bw 关键字参数控制到 seaborn.kdeplot()

标签: python matplotlib histogram


【解决方案1】:

听起来您可能正在寻找类似kernel density estimate 的东西。在Seaborn 中提供了带有简单 API 的现成 KDE 计算器/绘图仪。

import numpy as np
import seaborn as sns

data = np.random.normal(0, 1, 100)
sns.distplot(data)

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 2014-02-14
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2011-07-16
    • 2014-07-02
    相关资源
    最近更新 更多