强制使用科学风格的底图彩条标签

时间:2014-08-18 11:48:49

标签: python matplotlib matplotlib-basemap

字符串格式化可用于为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颜色条?

1 个答案:

答案 0 :(得分:12)

没有单行方法,但您可以通过更新颜色栏的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()

enter image description here

略微奇怪的处理方式的原因是颜色栏实际上具有静态分配的刻度和刻度标签。颜色条的轴(colorbar.ax)实际上总是介于0和1之间。(因此,更改colorbar.ax.yaxis.formatter不起任何作用。)刻度位置和标签是从colorbar.locator和{{ {1}}并在创建颜色栏时分配。因此,如果您需要精确控制颜色条的刻度/可勾选项,则需要在自定义刻度线的显示方式后显式调用colorbar.formatter。 colorbar的便利功能在幕后为您完成,但据我所知,您想要的不能通过其他方法完成。