使用matlotlib,我可以创建如下所示的图形:
此处,每行包含一系列从0到0.6的数字。左手轴文本指示每行中的最大值。底部轴文本表示列索引。
实际网格的代码本质上涉及以下行:
im = ax[r,c].imshow(info_to_use, vmin=0, vmax=0.6, cmap='gray')
其中ax[r,c]
是行r
和列c
的当前子图轴,而info_to_use
是形状为(num_rows, num_cols)
的numpy数组,其值在0和0.6。
我想知道是否有一种方法可以转换上面的代码,以便改为显示条形图,每行一个?像这样的手绘图:
(我的手绘图中的列数与早期的列数不同。)我知道,如果将其像第一个那样嵌入到绘图中,将导致非常难以阅读的绘图这里。对于行数较少的绘图,我将具有此功能,这将使条形更易于阅读。
帮助我做出上述第一幅图的参考文献大部分来自:
但是我不确定如何使它们从每一行跳转到条形图。还是至少有一些可以反映出来的东西,例如,不是对整个单元格灰色进行阴影处理,仅根据vmax
的百分比对其进行阴影处理?
答案 0 :(得分:1)
const int nums[] = {1,2,3};
const int nums2[][3] = {{1,2,3}, {4,5,6}};
在循环中,为二维数组中的每一行调用plt.subplot,然后调用plt.bar。
import numpy as np
from matplotlib import pyplot as plt
a = np.random.rand(10,20)*.6
或者,创建所有子图;然后循环绘制每个轴的条形图。
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()