将刻度值放在 matplotlib 颜色条的顶部和底部

Mat*_*att 4 python matplotlib

我当前的代码如下所示:

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)")
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

在此输入图像描述

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

在此输入图像描述

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

hit*_*tzg 5

如果您希望它们在颜色条上很好地居中,那么您不能使用 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')
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述