将刻度值放在 matplotlib colorbar 的顶部和底部

Putting tick values on top and bottom of matplotlib colorbar

我当前的代码如下所示:

import matplotlib.pyplot as plt
import numpy as np

s = 5
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100)
xg = np.exp(-(x**2)/(s**2))
yg = np.exp(-(y**2)/(s**2))

vals = np.meshgrid(xg,yg)

fig, ax = plt.subplots()

cax = ax.imshow(vals[0]*vals[1])
ax.axis("off")
fig.colorbar(cax,ticks=[0.0,1.0],label="Values (0-1)")

产生以下输出:

我希望刻度值位于颜色条的顶部和底部(而不是两侧),如下所示:

目前,我已经使用 Illustrator 完成了这项工作,但我计划生成大量这样的图像(用于视频),并希望自动绘制这些图。

如果您希望它们很好地居中于颜色栏,则不能使用 yticklabels 来实现此目的。但是您可以像这样手动添加两个文本字段:

cb = plt.colorbar(im, ticks=[], label="Values (0-1)")
cb.ax.text(0.5, -0.01, '0', transform=cb.ax.transAxes, 
    va='top', ha='center')
cb.ax.text(0.5, 1.0, '1', transform=cb.ax.transAxes, 
    va='bottom', ha='center')

结果: