【问题标题】:manipulate tick labels on a colorbar操作颜色条上的刻度标签
【发布时间】:2015-03-14 19:18:10
【问题描述】:

我想访问我的 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]。

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

我尝试打印 oldlabels[0],但得到 Text(0,0,u'\u22122.0')。


编辑:

我目前正在做:

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

有效。但我想将它们设置为旧值的 2 倍。我怎样才能自动做到这一点?我需要提取旧标签值,乘以(比如说)2,用新值更新轴标签。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如果您的数据不限于 [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()
    

    哦,现在我找到了 matplotlib 库示例,几乎相同:http://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2020-01-05
      相关资源
      最近更新 更多