【发布时间】:2019-12-29 17:25:57
【问题描述】:
使用 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 之间。
我想知道是否有一种方法可以将上面的代码转换为显示条形图,每行一个?像这个手绘图:
(我的手绘图中的列数与之前的图不同。)我知道如果将它嵌入到第一个图这样的图中,这将导致一个非常难以阅读的图这里。对于行数较少的绘图,我会使用它,这将使条形更易于阅读。
帮助我制作上面第一个情节的参考资料主要来自:
- Python - Plotting colored grid based on values
- custom matplotlib plot : chess board like table with colored cells
- https://matplotlib.org/3.1.1/gallery/subplots_axes_and_figures/colorbar_placement.html#sphx-glr-gallery-subplots-axes-and-figures-colorbar-placement-py
- https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/image_annotated_heatmap.html#sphx-glr-gallery-images-contours-and-fields-image-annotated-heatmap-py
但我不确定如何从这些跳转到每行的条形图。或者至少可以反映它的东西,例如,不是将整个单元格着色为灰色,而是仅根据vmax 的百分比对其进行着色?
【问题讨论】:
-
a bar chart in each row.. 如果行引用a series of numbers from 0 to 0.6,那么您只需要为每一行制作一个条形图。 Matplotlib 库有许多 bar charts 的示例,您可能希望将每个示例都放在 subplot 中。我建议花一些时间在the tutorial 上。尝试至少完成前三个和中间部分的艺术家教程。 -
使用枚举(从一个开始)遍历
info_to_use的每一行以跟踪行号;在循环中调用 plt.subplot 与 n_rows、一列和行号;然后用行本身调用 plt.bar。 -
@wwii 感谢教程的链接。我可能需要做一个嵌套的子图stackoverflow.com/questions/34933905/…,这增加了另一个混乱的来源,但也许我最好单独制作所有这些数字并使用 Photoshop 或谷歌绘图将它们粘贴在一起
-
@wwii 您的“可能重复”中的堆叠条形图可能会起作用,除了我可能会添加一些空格,以便每一行从相同的 x 轴级别开始.
标签: python matplotlib