为了账号安全,请及时绑定邮箱和手机立即绑定

将matplotlib的阴影值网格变成一系列条形图,每行一个?

将matplotlib的阴影值网格变成一系列条形图,每行一个?

一只斗牛犬 2022-05-11 14:36:04
使用 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()


查看完整回答
反对 回复 2022-05-11
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号