这是此答案的后续问题。我正在尝试绘制标准化直方图,但不是将 1 作为 y 轴上的最大值,而是得到不同的数字。
对于数组 k=(1,4,3,1)
import numpy as np
def plotGraph():
import matplotlib.pyplot as plt
k=(1,4,3,1)
plt.hist(k, normed=1)
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
plotGraph()
我得到这个直方图,看起来不像规范。
对于不同的数组 k=(3,3,3,3)
import numpy as np
def plotGraph():
import matplotlib.pyplot as plt
k=(3,3,3,3)
plt.hist(k, normed=1)
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
plotGraph()
我得到这个直方图,最大 y 值为 10。
对于不同的 k,即使 normed=1 或 normed=True,我也会得到不同的 y 最大值。
为什么标准化(如果有效)会根据数据发生变化,如何使 y 的最大值等于 1?
更新:
我正在尝试通过在 matplotlib 中绘制条形高度总和为 1 的直方图来实现Carsten König的答案,并得到非常奇怪的结果:
import numpy as np
def plotGraph():
import matplotlib.pyplot as plt
k=(1,4,3,1)
weights = np.ones_like(k)/len(k)
plt.hist(k, weights=weights)
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
plotGraph()
结果:
我究竟做错了什么?