riv*_*iao 20 python matplotlib histogram
plt.hist的density说法不成立。
我尝试使用density函数中的参数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()
Run Code Online (Sandbox Code Playgroud)

但当我用股票数据尝试时,它根本不起作用。结果给出了非标准化数据。我在我的数据数组中没有发现任何异常数据。
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
Run Code Online (Sandbox Code Playgroud)

这是 Matplotlib 中的一个已知问题。
如错误报告中所述: pyplot.hist() 中的密度标志无法正常工作
当密度 = False 时,直方图将在 Y 轴上有计数。但当密度 = True 时,Y 轴并不意味着任何有用的东西。我认为更好的实现是将 PDF 绘制为密度 = True 时的直方图。
开发人员将此视为一项功能而不是错误,因为它保持了与 numpy 的兼容性。他们已经关闭了一些关于它的错误报告,因为它正在按预期工作。更令人困惑的是,matplotlib 网站上的示例似乎显示此功能与 y 轴一起被分配了有意义的值。
你想用 matplotlib 做的事情是合理的,但 matplotlib 不会让你这样做。
| 归档时间: |
|
| 查看次数: |
13807 次 |
| 最近记录: |