我有一个 3x10 2d ndarray,我想做一个 matplotlib 历史图。我想要一个子图中每个数组行的历史图。我尝试直接提供 ndarray,但发现 matplotlib 会提供 ndarray 每一列的直方图,这不是我想要的。我怎样才能实现我的目标?目前,我必须明确声明hist()每一行的命令,我宁愿避免这种方法。import numpy as npimport matplotlib.pyplot as pltd = np.array([[1, 2, 2, 2, 3, 1, 3, 1, 2, 4, 5], [4, 4, 5, 5, 3, 6, 6, 7, 6, 5, 7], [5, 6, 7, 7, 8, 8, 9, 10, 11, 12, 10]] )print( '\nd', d ) fig, ax = plt.subplots(4, 1)dcount, dbins, dignored = ax[0].hist( d, bins=[2, 4, 6, 8, 10, 12], histtype='bar', label='d' )d0count, d0bins, d0ignored = ax[1].hist( d[0,:], bins=[2, 4, 6, 8, 10, 12], histtype='bar', label='d0', alpha=0.2 )d1count, d1bins, d1ignored = ax[2].hist( d[1,:], bins=[2, 4, 6, 8, 10, 12], histtype='bar', label='d1', alpha=0.2 )d2count, d2bins, d2ignored = ax[3].hist( d[2,:], bins=[2, 4, 6, 8, 10, 12], histtype='bar', label='d2', alpha=0.2 )ax[0].legend()ax[1].legend()ax[2].legend()ax[3].legend()print( '\ndcount', dcount )print( '\ndbins', dbins )print( '\ndignored', dignored )print( '\nd0count', d0count )print( '\nd0bins', d0bins )print( '\nd0ignored', d0ignored )print( '\nd1count', d0count )print( '\nd1bins', d0bins )print( '\nd1ignored', d0ignored )print( '\nd2count', d0count )print( '\nd2bins', d0bins )print( '\nd2ignored', d0ignored )plt.show()
2 回答

qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
# import needed packages
import numpy as np
import matplotlib.pyplot as plt
创建要绘制的数据
使用列表理解和numpy.random.normal
:
gaussian0=[np.random.normal(loc=0, scale=1.5) for _ in range(100)]
gaussian1=[np.random.normal(loc=2, scale=0.5) for _ in range(100)]
gaussians = [gaussian0, gaussian1]
仅用一次历史调用进行绘图
for gaussian in gaussians:
plt.hist(gaussian,alpha=0.5)
plt.show()
导致:

Qyouu
TA贡献1786条经验 获得超11个赞
我找到了一个更简单的方法。转置d
。也就是说,更换
dcount, dbins, dignored = ax[0].hist( d, bins=[2, 4, 6, 8, 10, 12], histtype='bar', label='d' )
和
dcount, dbins, dignored = ax[0].hist( d.T, bins=[2, 4, 6, 8, 10, 12], histtype='bar', label=['d0', 'd1','d2'], alpha=0.5 )
我希望 matplotlib 的hist()
命令会有一些命令来执行它,但没有找到它。转置 numpy 数组有效。我想知道这是否是 matplotlib 用户通常这样做的方式?
添加回答
举报
0/150
提交
取消