我使用gridspec
绘制两个数字:
fig = plt.figure(num=2,figsize=(5,2))
gs = gridspec.GridSpec(1, 2, width_ratios=[1,1])
ax0 = plt.subplot(gs[0])
ax1 = plt.subplot(gs[1])
ax0.imshow(ROI,'gray')
map1 = ax1.imshow(z,cmap=cm.YlOrRd)
divider1 = make_axes_locatable(ax1)
cax1 = divider1.append_axes("right", size="5%", pad=0.05)
cbar1 = plt.colorbar(map1, cax=cax1)
ROI
和z
预先定义了相同的尺寸。
但是它们的尺寸略有不同。
我想把它做成相同的尺寸:
如何解决这个问题?
答案 0 :(得分:2)
问题是你在/1
中将两个数字的宽度固定为相同,然后将颜色条添加到第二个绘图中,该绘图占用了一些宽度(5%加上填充)。由于gridspec
的宽高比为1:1,因此宽度的变化也会改变图形的高度。
避免这种情况的最简单方法是在宽度比中考虑颜色条的额外宽度:
imshow
这将产生以下情节:
您也可以使用import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from mpl_toolkits.axes_grid1 import make_axes_locatable
# Random test data:
ROI = np.random.rand(250, 150)
z = np.random.rand(250, 150)
fig = plt.figure(num=2,figsize=(4,2))
gs = gridspec.GridSpec(1, 2, width_ratios=[1,1.08])
ax0 = plt.subplot(gs[0])
ax1 = plt.subplot(gs[1])
ax0.imshow(ROI,'gray')
map1 = ax1.imshow(z,cmap=plt.cm.YlOrRd)
divider1 = make_axes_locatable(ax1)
cax1 = divider1.append_axes("right", size="5%", pad="3%")
cbar1 = plt.colorbar(map1, cax=cax1)
plt.show()
gridspec
这给出了:
这可能更灵活,但也需要更多地调整填充和尺寸。