matplotlib颜色条:需要在条顶部使用指数强制科学计数法

时间:2019-03-22 19:43:27

标签: matplotlib colorbar scientific-notation

使用matplotlib彩条时,通常会以科学计数法打印数字,只有尾数显示在彩条的侧面,而单个指数位于彩条的顶部。我经常得到这种格式,即使我不想要它也是如此。现在,我真的很需要它,因为我正在以十进制表示法绘制带有六个零的小数字,然后突然matplotlib决定要以十进制格式而不是科学格式打印数字。有什么方法可以迫使它使用科学符号,并在条形图的顶部使用单个指数?

1 个答案:

答案 0 :(得分:0)

找到了。

颜色栏具有可选的format参数。您可以使用简单的文本参数指定简单的科学计数法或十进制格式。您还可以提供ScalarFormatter对象作为参数。 ScalarFormatter对象具有函数set_powerlimits(min,max)。如果调用该函数,则小于10 ^ min或大于10 ^ max的任何数字都将以科学计数法表示。如果您的颜色条值的整个范围小于10 ^ min或大于10 ^ max,则颜色条将按照OP中的要求显示结果:科学计数法,在条的侧面仅尾数,而在条上只有一个指数。最佳。就我而言,颜色条的值都在10 ^ -6左右,我做了:

import matplotlib.ticker                         # here's where the formatter is
cbformat = matplotlib.ticker.ScalarFormatter()   # create the formatter
cbformat.set_powerlimits((-2,2))                 # set the limits for sci. not.

#  do whatever plotting you have to do
fig = plt.figure()
ax1 =   # create some sort of axis on fig
plot1 = ax1....   # do your plotting here ... plot, contour, contourf, whatever
# now add colorbar with your created formatter as an argument
fig.colorbar(plot1, ax=ax1, format=cbformat)