我在下面的直方图读数上得到了一个不正确的pdf图。
以下是我上面图片的源代码。
import numpy as np
import matplotlib.pyplot as plt
import statistics as st
import matplotlib.mlab as mlab
y1=[-54, -34, -45, -49, -51, -47, -52, -47, -51, -43, -43, -47, -45, -43, -42, -42, -43, -42, -41, -40, -45, -45, -47, -47, -47, -42, -40, -41, -46, -46, -42, -42, -42, -46, -41, -41, -41, -48, -44, -49, -45, -48, -45, -45, -44, -48, -51, -43, -45, -48, -51, -44, -50, -37, -39, -45, -45, -44, -50, -44, -46, -45, -49, -44, -47, -40, -43, -42, -46, -44, -43, -45, -44, -53, -48, -47, -44, -47, -50, -46, -55, -41, -49, -44, -42, -44, -48, -48, -45, -40, -41, -42, -44, -47, -52, -49, -48, -45, -45, -49, -49, -51, -42, -41, -45, -44, -42, -50, -48, -59, -54, -48, -41, -48, -49, -45, -45, -47, -45, -44]
plt.figure(1)
val=sorted(y1)
std = st.stdev(val)
mean = st.mean(val)
bins=np.linspace(min(val), max(val),50)
plt.hist(val,bins, facecolor='green', alpha=0.75)
y = mlab.normpdf( bins, mean, std)
plt.plot(bins, y, 'r--', linewidth=1)
plt.xlabel ('X Values')
plt.ylabel ('No. of Values')
plt.title ('Histogram')
plt.legend()
plt.show()
我不知道PDF情节有什么问题。为什么不跟踪直方图读数?对此有任何帮助都会很棒。谢谢提前!
答案 0 :(得分:2)
情节没有问题,而pdf是正确的。
条形图显示直方图,即值的频率。该线显示概率密度函数。那些当然是非常不同的尺度。
如果要以相同比例显示条形和条形线,则需要缩放条形或线条。
plt.hist(val, bins, density=True, facecolor='green', alpha=0.75, )
或
h, e, _ = plt.hist(val, bins, facecolor='green', alpha=0.75, )
f = np.sum(h*np.diff(e))
y = mlab.normpdf( bins, mean, std)
plt.plot(bins, y*f, 'r--', linewidth=1)
取决于您是否要显示密度或绝对值。