matplotlib colorbar: необходимо ввести научную запись с показателем в верхней части столбца - PullRequest
0 голосов
/ 22 марта 2019

При использовании цветовой шкалы matplotlib цифры часто печатаются в научных записях, причем на боковой панели отображаются только мантиссы, а в верхней части бара находится один показатель степени.Я получаю этот формат часто, даже когда я не хочу его.Теперь мне это действительно нужно, потому что я рисую маленькие числа с шестью нулями в десятичной записи, и вдруг matplotlib решает, что хочет напечатать свои числа в десятичном, а не научном формате.Есть ли способ заставить его использовать научную запись с единственным показателем в верхней части бара?

1 Ответ

0 голосов
/ 29 марта 2019

Найден.

Цветовая панель имеет необязательный аргумент format.Вы можете указать простые научные обозначения или десятичные форматы с простыми текстовыми аргументами.Вы также можете указать объект ScalarFormatter в качестве аргумента.Объект ScalarFormatter имеет функцию set_powerlimits(min,max).Если она вызывает эту функцию, любое число меньше 10 ^ min или больше 10 ^ max будет выражено в научной нотации.Если весь диапазон значений вашей цветовой шкалы меньше 10 ^ мин или больше 10 ^ макс, ваша цветовая полоса будет отображать результаты в соответствии с запросом в 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)
...