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()
但是当我尝试使用库存数据时,它根本不起作用,结果给出了未归一化的数据。我没有在数据数组中找到任何异常数据
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
答案 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。 数字看起来很奇怪,因为您的垃圾箱很小