使用填充 pad
为了相对于子图移动颜色条,可以使用pad 参数到fig.colorbar。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
fig, ax = plt.subplots(figsize=(4,4))
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")
fig.colorbar(im, orientation="horizontal", pad=0.2)
plt.show()
使用轴分隔器
可以使用make_axes_locatable 的实例来划分轴并创建一个与图像图完全对齐的新轴。同样,pad 参数将允许设置两个轴之间的空间。
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np; np.random.seed(1)
fig, ax = plt.subplots(figsize=(4,4))
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")
divider = make_axes_locatable(ax)
cax = divider.new_vertical(size="5%", pad=0.7, pack_start=True)
fig.add_axes(cax)
fig.colorbar(im, cax=cax, orientation="horizontal")
plt.show()
使用子图
可以直接创建两排子图,一排图片,一排彩条。然后,在图形创建中将height_ratios 设置为gridspec_kw={"height_ratios":[1, 0.05]},使得其中一个子图的高度比另一个小得多,并且这个小子图可以承载颜色条。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
fig, (ax, cax) = plt.subplots(nrows=2,figsize=(4,4),
gridspec_kw={"height_ratios":[1, 0.05]})
im = ax.imshow(np.random.rand(11,16))
ax.set_xlabel("x label")
fig.colorbar(im, cax=cax, orientation="horizontal")
plt.show()