我想在我的直方图上有第二个斧头,其中pourcentage对应于每个bin,就像我使用normed = True一样。我试图使用双胞胎,但规模不正确。
x = np.random.randn(10000)
plt.hist(x)
ax2 = plt.twinx()
plt.show()
如果您可以使用日志缩放x:)
,则可以使用它答案 0 :(得分:2)
plt.hist
返回每个存储桶中的容器和数据。您可以使用它们来计算直方图下的区域,并使用它可以找到每个条形的标准化高度。 twinx
轴可以相应对齐:
xs = np.random.randn(10000)
ax1 = plt.subplot(111)
cnt, bins, patches = ax1.hist(xs)
# area under the istogram
area = np.dot(cnt, np.diff(bins))
ax2 = ax1.twinx()
ax2.grid('off')
# align the twinx axis
ax2.set_yticks(ax1.get_yticks() / area)
lb, ub = ax1.get_ylim()
ax2.set_ylim(lb / area, ub / area)
# display the y-axis in percentage
from matplotlib.ticker import FuncFormatter
frmt = FuncFormatter(lambda x, pos: '{:>4.1f}%'.format(x*100))
ax2.yaxis.set_major_formatter(frmt)