猿问

如何 hist() 使用 Matplotlib 绘制二维 NumPy 数组的每个数据数组行?

我有一个 3x10 2d ndarray,我想做一个 matplotlib 历史图。我想要一个子图中每个数组行的历史图。我尝试直接提供 ndarray,但发现 matplotlib 会提供 ndarray 每一列的直方图,这不是我想要的。我怎样才能实现我的目标?目前,我必须明确声明hist()每一行的命令,我宁愿避免这种方法。


import numpy as np

import matplotlib.pyplot as plt


d = 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()

精慕HU
浏览 147回答 2
2回答

qq_花开花谢_0

# import needed packagesimport numpy as npimport 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

我找到了一个更简单的方法。转置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 用户通常这样做的方式?
随时随地看视频慕课网APP

相关分类

Python
我要回答