Matplotlib 如何绘制宽度不等的直方图,而无需从原始数据计算直方图?
Matplotlib说“计算并绘制x的直方图”。我想先画一个图,不计算任何东西。我有箱子的宽度(不等)和每个箱子的总量,我想绘制一个频率-数量直方图 例如,使用数据Matplotlib 如何绘制宽度不等的直方图,而无需从原始数据计算直方图?,matplotlib,histogram,Matplotlib,Histogram,Matplotlib说“计算并绘制x的直方图”。我想先画一个图,不计算任何东西。我有箱子的宽度(不等)和每个箱子的总量,我想绘制一个频率-数量直方图 例如,使用数据 cm Frequency 65-75 2 75-80 7 80-90 21 90-105 15 105-110 12 它应该做出这样一个图: 其中,块的面积表示每个类中的频率。您想要: 将numpy导入为np 将matplotlib.pyplot作为plt导入 x=np.sort(np.random.r
cm Frequency
65-75 2
75-80 7
80-90 21
90-105 15
105-110 12
它应该做出这样一个图:
其中,块的面积表示每个类中的频率。您想要:
将numpy导入为np
将matplotlib.pyplot作为plt导入
x=np.sort(np.random.rand(6))
y=np.rand.rand(5)
plt.bar(x[:-1],y,宽度=x[1:]-x[:-1],align='edge')
plt.show()
此处x
包含条的边缘,y
包含高度(而不是面积!)。请注意,x
中的元素比y
中的元素多一个,因为边比条多一个
使用原始数据和面积计算:
来自未来进口部的
将numpy作为np导入
将matplotlib.pyplot作为plt导入
频率=np.数组([2,7,21,15,12])
bin=np.数组([65,75,80,90,105,110])
宽度=料仓[1:]-料仓[:-1]
高度=频率/宽度
plt.bar(料仓[:-1],高度,宽度=宽度,对齐=边缘)
plt.show()
与David Zwicker一样工作:
将numpy导入为np
将matplotlib.pyplot作为plt导入
freqs=np.数组([2,7,21,15,12])
bin=np.数组([65,75,80,90,105,110])
宽度=料仓[1:]-料仓[:-1]
高度=频率A类型(np浮动)/宽度
在(箱重复(2)[1:-1],高度重复(2),面颜色='steelblue')之间填充
plt.show()
有没有办法获得与
histtype='stepfilled'
相同的效果?这些示例不再适用。酒吧的默认位置已更改?