matplotlib hist函数参数密度不起作用

时间:2019-04-07 03:52:20

标签: python matplotlib

plt.hist密度参数不起作用。

我试图在plt.hist函数中使用密度参数对我的绘图中的股票收益进行归一化,但是它不起作用

以下代码对我来说很好用,并提供了我想要的概率密度函数

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)

# example data
mu = 100  # mean of distribution
sigma = 15  # standard deviation of distribution
x = mu + sigma * np.random.randn(437)

num_bins = 50

plt.hist(x, num_bins, density=1)

plt.show()

plot shows density

但是当我尝试使用库存数据时,它根本不起作用,结果给出了未归一化的数据。我没有在数据数组中找到任何异常数据

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
plt.hist(returns, 50,density = True)
plt.show()
# "returns" is a np array consisting of 360 days of stock returns

density not working

2 个答案:

答案 0 :(得分:2)

这是Matplotlib中的一个已知问题。

Bug Report: The density flag in pyplot.hist() does not work correctly

中所述

当密度= False时,直方图将在Y轴上计数。但是,当密度= True时,Y轴并不意味着任何有用的东西。我认为当密度= True时,更好的实现方式是将PDF绘制为直方图。

开发者view this as a feature not a bug since it maintains compatibility with numpy。由于它已按预期工作,因此他们已经关闭了一些有关它的错误报告。在matplotlib站点上的示例更加令人困惑,似乎表明该功能在y轴上分配了有意义的值的情况下起作用。

您想要对matplotlib进行处理是合理的,但是matplotlib不会让您那样做。

答案 1 :(得分:1)

这不是错误。 条的面积等于1。 数字看起来很奇怪,因为您的垃圾箱很小