操纵颜色条上的刻度标签

时间:2015-03-14 19:18:11

标签: 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]那样使用新标签。

我只是不知道如何“搞定”旧标签。我搜索了所有内容并尝试了很多东西,但我做的事情从根本上说是错误的。

我试图打印旧标签[0],但我得到文字(0,0,你'\ u22122.0')。


编辑:

我现在正在做:

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

哪个有效。但我想将它们设置为2 x旧值。我该如何自动执行此操作?我需要提取旧标签值,乘以(比方说)2,用新值更新轴标签。

1 个答案:

答案 0 :(得分:3)

如果您的数据不限于[0,1],我建议您在将数据传递到色彩图而不是更改数据并重新标记色条时使用标准:http://matplotlib.org/api/cm_api.html?highlight=norm%20colormap#matplotlib.cm.ScalarMappable.norm

但是,您可以通过直接操作底层轴重新标记颜色栏:

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()

enter image description here

哦,现在我找到matplotlib画廊的例子,几乎一样:http://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html