Python 操纵颜色栏上的勾号标签

Python 操纵颜色栏上的勾号标签,python,matplotlib,Python,Matplotlib,我想访问matplotlib colobar上的刻度标签,以便操作它们 例如,我的起始标签可能是[-2,-1,0,1,2] 我使用了: locs,oldlabels = plt.xticks() newlabels = ['a','b','c','d','e'] plt.xticks(locs, newlabels) 这很有效。但我不想手动写入新标签。我想访问旧标签,这样我就可以有新标签,比如[2*(-2),2*(-1),2*0,2*1,2*2] 我只是不知道如何“抓住”旧标签。我在谷歌上搜索

我想访问matplotlib colobar上的刻度标签,以便操作它们

例如,我的起始标签可能是[-2,-1,0,1,2]

我使用了:

locs,oldlabels = plt.xticks()
newlabels = ['a','b','c','d','e']
plt.xticks(locs, newlabels)
这很有效。但我不想手动写入新标签。我想访问旧标签,这样我就可以有新标签,比如[2*(-2),2*(-1),2*0,2*1,2*2]

我只是不知道如何“抓住”旧标签。我在谷歌上搜索了所有东西,尝试了很多东西,但我做了一些根本错误的事情

我试图打印旧标签[0],但得到了文本(0,0,u'\u2212.0')


编辑:

我目前正在做:

new_labels = [1,2,3,4,5,6,7,8,9]
colorbarname.ax.set_xticklabels(new_labels)

这很有效。但我想把它们设置为原来值的2倍。我怎样才能自动完成这项工作?我需要提取旧标签值,乘以(比如)2,用新值更新轴标签。

如果您的数据不限于[0,1],我建议在将数据传递到colormap时使用范数,而不是更改数据并重新标记colorbar:

但是,可以通过直接操纵基础轴来重新标记颜色栏:

import numpy as np
import pylab as plt

A = np.random.random((10,10))

plt.subplot(121)
plt.imshow(A,interpolation='nearest')

cb = plt.colorbar()
oldlabels = cb.ax.get_yticklabels()
print(map(lambda x: x.get_text(),oldlabels))
newlabels = map(lambda x: str(2 * float(x.get_text())), oldlabels)
print(newlabels)
cb.ax.set_yticklabels(newlabels)
plt.show()

哦,现在我发现matplotlib库的示例几乎相同: