我目前的代码如下:
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完成了这项工作,但我计划生成大量这样的图片(用于视频),并希望自动制作这些图片。
答案 0 :(得分:2)
如果你希望它们很好地以色条为中心,那么你就不能使用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')
结果: