python matplotlib颜色条的顶部标签

tjvv9vkg  于 2023-05-27  发布在  Python
关注(0)|答案(2)|浏览(260)

默认情况下,matplotlib会将colorbar标签放置在垂直colorbar旁边。什么是最好的方式来强制标签的顶部的颜色栏?目前,我的解决方案需要根据标签的大小调整labelpady值:

import numpy as np
import matplotlib.pylab as plt 

dat = np.random.randn(10,10)
plt.imshow(dat, interpolation='none')

clb = plt.colorbar()
clb.set_label('label', labelpad=-40, y=1.05, rotation=0)

plt.show()

有没有更好、更通用的方法来做到这一点?

2nc8po8w

2nc8po8w1#

您可以设置颜色条轴的title(显示在轴上方),而不是label(显示在长轴上)。要访问颜色条的Axes,可以使用clb.ax。然后,您可以使用set_title,就像使用任何其他Axes示例一样。
例如:

import numpy as np
import matplotlib.pylab as plt 

dat = np.random.randn(10,10)
plt.imshow(dat, interpolation='none')

clb = plt.colorbar()
clb.ax.set_title('This is a title')

plt.show()

tct7dpnv

tct7dpnv2#

颜色条存储在图中的轴列表中。因此,也可以通过访问包含颜色条的Axes来设置颜色条标题/标签。由于它是一个Axes对象,因此在其上定义了set()方法,该方法可用于修改许多属性,如title,xlabel,ylabel,ticks等。

import numpy as np
import matplotlib.pylab as plt

dat = np.random.randn(10,10)
plt.imshow(dat, interpolation='none')
plt.colorbar()
plt.gcf().axes     # [<Axes: >, <Axes: label='<colorbar>'>]
plt.gcf().axes[1].set(title='This is a title', xlabel='caption', ylabel='colors');

使用子图,相同的图可以编码如下。

fig, ax = plt.subplots()
ax.imshow(dat, interpolation='none')
plt.colorbar(ax.images[0], ax=ax)
fig.axes[1].set(title='This is a title', xlabel='caption', ylabel='colors');

相关问题