python:在同一图中绘制图像和绘图

问题描述

我想在同一张图上绘制一组图像,并在每个图像下绘制一个图。我正在使用ImageGrid模块。结果仅对图像有利,但是当我将其与其他图混合时,会获得以不同方式缩放的轴

n_rows = 2
n_cols = 4
import matplotlib.pyplot as plotter
from mpl_toolkits.axes_grid1 import ImageGrid
fig  = plotter.figure(figsize=(3*n_rows,3*n_cols))
axes = ImageGrid(fig,111,nrows_ncols=(n_rows,n_cols),axes_pad=0.4,label_mode="1",share_all=False,)
import numpy

img = numpy.random.rand(224,224,3)
bars= numpy.random.rand(10,)
axes[0].imshow(img)
axes[1].imshow(img)
axes[2].imshow(img)
axes[3].imshow(img)
axes[4].bar(range(0,10),bars)
axes[5].bar(range(0,bars)
axes[6].bar(range(0,bars)
axes[7].bar(range(0,bars)
plotter.show()

我获得:

code output

如您所见,条形图非常小,相反,我希望这些图具有相同的图像大小,而无需更改条形值(它们非常小),并且条形图之间的间距相等。>

此外,结果似乎对图形尺寸和要绘制的图像数量有很大影响,由于图像数量是可变的,因此我需要一个通用的解决方案。

我还尝试使用经典的subplots函数获得相似的结果。

_,axes = plotter.subplots(4,4)
axes[0][0].imshow(img)
axes[0][1].imshow(img)
axes[0][2].imshow(img)
axes[0][3].imshow(img)
axes[1][0].bar(range(0,bars)
axes[1][1].bar(range(0,bars)
axes[1][2].bar(range(0,bars)
axes[1][3].bar(range(0,bars)
axes[2][0].imshow(img)
axes[2][1].imshow(img)
axes[2][2].imshow(img)
axes[2][3].imshow(img)
axes[3][0].bar(range(0,bars)
axes[3][1].bar(range(0,bars)
axes[3][2].bar(range(0,bars)
axes[3][3].bar(range(0,bars)

其中的输出是:

[

second attempt output2

但是,图和图像的大小不同,如果条形图的值较小,则条形图的结果较小,而我希望它们的图像尺寸相同。

是否有一种简单的解决方案,使所有图像和图形在相同的图形和尺寸上显示为“可见”,而无需进行某些处理就可以使它们变得太小或太大?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)