使用 matlotlib,我可以创建如下所示的图形:在这里,每一行由一系列从 0 到 0.6 的数字组成。左侧轴文本表示每行中的最大值。底部轴文本表示列索引。实际网格的代码基本上涉及这一行: im = ax[r,c].imshow(info_to_use, vmin=0, vmax=0.6, cmap='gray')其中是 row和 columnax[r,c]的当前子图轴,并且是一个 numpy 形状数组,其值介于 0 和 0.6 之间。rcinfo_to_use(num_rows, num_cols)我想知道是否有一种方法可以转换上面的代码,以便它显示条形图,每行一个?像这个手绘图:(与之前的图相比,我手绘图中的列数不一样。)我知道如果将其嵌入到这里的第一个图中,这将导致非常难以阅读的图。对于行数较少的绘图,我会使用它,这将使条形更易于阅读。但我不确定如何从这些跳转到每行的条形图。或者至少可以反映它的东西,例如,不是将整个单元格着色为灰色,而是根据vmax?
1 回答

牛魔王的故事
TA贡献1830条经验 获得超3个赞
import numpy as np
from matplotlib import pyplot as plt
a = np.random.rand(10,20)*.6
在一个循环中,为二维数组中的每一行调用 plt.subplot 然后 plt.bar 。
for i, thing in enumerate(a,1):
plt.subplot(a.shape[0],1,i)
plt.bar(range(a.shape[1]),thing)
plt.show()
plt.close()
或者,创建所有子图;然后在一个循环中用每个轴制作一个条形图。
fig, axes = plt.subplots(a.shape[0],1,sharex=True)
for ax, data in zip(axes, a):
ax.bar(range(a.shape[1]), data)
plt.show()
plt.close()
添加回答
举报
0/150
提交
取消