【问题标题】:Force use of scientific style for basemap colorbar labels强制对底图颜色条标签使用科学风格
【发布时间】:2014-10-11 07:48:59
【问题描述】:

字符串格式可用于为 matplotlib.basemap 颜色条标签指定科学记数法:

cb = m.colorbar(cs, ax=ax1, format='%.4e')

但随后每个标签都带有基础科学标记。

如果数字足够大,colobar 会自动将它们减少为科学计数法,将底数(即x10^n)放在颜色条的顶部,只留下系数数字作为标签。

您可以使用以下标准轴执行此操作:

ax.ticklabel_format(style='sci', axis='y', scilimits=(0,0))

是否有 matplotlib.basemap 颜色条的等效方法,或者标准的 matplotlib 颜色条?

【问题讨论】:

    标签: python matplotlib matplotlib-basemap


    【解决方案1】:

    没有单行方法,但您可以通过更新颜色条的formatter 然后调用colorbar.update_ticks() 来做到这一点。

    import numpy as np
    import matplotlib.pyplot as plt
    
    z = np.random.random((10,10))
    
    fig, ax = plt.subplots()
    im = ax.imshow(z)
    cb = fig.colorbar(im)
    
    cb.formatter.set_powerlimits((0, 0))
    cb.update_ticks()
    
    plt.show()
    

    这种处理方式有点奇怪的原因是颜色条实际上具有静态分配的刻度和刻度标签。颜色条的坐标轴 (colorbar.ax) 实际上始终介于 0 和 1 之间。(因此,更改 colorbar.ax.yaxis.formatter 没有任何用处。)刻度位置和标签是根据 colorbar.locatorcolorbar.formatter 计算的,并在何时分配颜色栏已创建。因此,如果您需要精确控制颜色条的刻度/刻度,您需要在自定义刻度的显示方式后显式调用colorbar.update_ticks()。 colorbar 的便利功能在幕后为您完成了这项工作,但据我所知,您想要的无法通过其他方法完成。

    【讨论】:

    • 优秀。这肯定会让我花很长时间才能弄清楚。所以我认为这也适用于basemap 彩条?谢谢乔。
    • 乐于助人!对于 basemap 彩条,它应该完全相同。我认为basemap 轴不会以任何方式改变颜色条,但我可能错了。
    猜你喜欢
    • 2016-05-26
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多