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

时间:2015-03-02 11:01:23

标签: 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)")

产生以下输出:

enter image description here

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

enter image description here

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

1 个答案:

答案 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')

结果: enter image description here