我有一个imshow图表,显示数值的colobar。颜色条比图形大得多。有没有办法对它们进行缩放,使它们的大小相同,最好不影响图形的纵横比?
grid = np.ma.array(grid, mask=np.isnan(grid))
plot.imshow(grid, interpolation='nearest', aspect='equal', vmax = private.vmax, vmin = private.vmin)
plot.minorticks_off()
plot.set_xticks(range(len(placex)))
plot.set_yticks(range(len(placey)))
plot.set_xticklabels(placex)
plot.set_yticklabels(placey, rotation = 0)
plot.colorbar()
plot.show()
答案 0 :(得分:4)
您可以通过matplotlib的任何内置方法指定axis-object,然后将其用于您的colorbar,例如:
import matplotlib.pyplot as plt
import numpy as np
ax2 = plt.subplot2grid((1,6), (0, 5), colspan=1)
ax1 = plt.subplot2grid((1,6), (0, 0), colspan=5)
plt.imshow(np.random.random((10,10)))
plt.colorbar(cax=ax2)
plt.show()
这将导致类似:
但是,如果你的imshow-axis变得非常扁平(由于aspect =“相等”,这可能会发生),这无济于事。
如果您想处理此类案件,可以
将数字大小调整为网格的宽高比,例如
fig = figure(figsize = grid.shape [1] * 1.5 / dpi,grid.shape [0] / dpi)
在绘制后读取ax1的坐标,然后使用适当变换的坐标创建ax2,然后使用ax2作为颜色条。当您调整窗口大小时,这种行为不会很好,但如果您只是自动将图形创建为图像文件,则可能会有效。
如果你需要的是2.我可以为此添加一个例子,但如果你确定这是你想要的,我只会做这项工作。
问候, 的Thorsten