操作colorb上的刻度标签

2024-10-01 17:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想访问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')。在


编辑:

我目前正在做:

^{pr2}$

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


Tags: 文本编辑matplotlibplt标签事情手工pr2
1条回答
网友
1楼 · 发布于 2024-10-01 17:35:27

如果您的数据不局限于[0,1],我建议您在将数据传递给colormap时使用规范,而不是更改数据并重新标记colorbar: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

相关问题 更多 >

    热门问题