matplotlib 如何强制科学计数法与指数在顶部的colorbar

pgx2nnw8  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(251)

使用matplotlib colorbar,通常数字会以科学计数法打印,只有尾数显示在条形图的侧面,并且在条形图的顶部显示一个指数。我经常使用这种格式,即使我不想要它。现在,我真的需要它,因为我正在用十进制符号绘制小数字,比如六个零,突然matplotlib决定用十进制格式而不是科学格式来打印数字。有没有办法强迫它使用科学计数法,在条形图的顶部有一个指数?

7rfyedvj

7rfyedvj1#

找到了
颜色条有一个可选的format参数。您可以使用简单的文本参数指定简单的科学计数法或十进制格式。您还可以提供ScalarFormatter对象作为参数。ScalarFormatter对象有一个函数set_powerlimits(min,max)。如果它调用该函数,任何小于10^min或大于10^max的数字都将以科学计数法表示。如果您的颜色条值的整个范围小于10^min或大于10^max,你的colorbar将按照OP:scientific notation中的要求显示结果,在bar的两侧只有尾数,顶部有一个指数。对于我的例子,colorbar的值都是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)

相关问题