这是我从matplotlib sample examples借来的代码,进行了一些小的修改,以为带有正确放置标签的图像生成水平色条:
from matplotlib import colors
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
cmap = "cool"
fig, axs = plt.subplots()
# Generate data with a range that varies from one plot to the next.
data = (1 / 10) * np.random.rand(10, 20) * 1e-6
image = axs.imshow(data, cmap=cmap)
axs.label_outer()
# Find the min and max of all colors for use in setting the color scale.
vmin = image.get_array().min()
vmax = image.get_array().max()
norm = colors.Normalize(vmin=vmin, vmax=vmax)
cbar = fig.colorbar(image, ax=axs, orientation='horizontal', fraction=.1)
cbar.ax.set_ylabel('$[M_\u2609 kpc^{{-2}}]$', position=(30,1), fontsize=20, rotation=0)
plt.show()
但这是我不想要的输出。
我想要一个标签,该标签正好位于colorbar
的中心(下方或上方)。更改上面代码中给position
的坐标后,似乎在确定标签位置上没有任何灵活性。在matplotlib
颜色条的上下文中,我是否没有意识到?非常感谢您的帮助。
答案 0 :(得分:3)
轴标签(ylabel
)设计为沿相应的轴放置。另一方面,根据设计,标题位于轴对象的中心。因此,您应该使用set_ylabel
来代替set_title
。
cbar.ax.set_title('$[M_\u2609 kpc^{{-2}}]$', fontsize=20)
有关图形的不同部分的更多信息,请参见this example "Anatomy of a Figure"