Как можно показать x10 (верхний индекс) вместо 1e (число) для осей в matplotlib? - PullRequest
0 голосов
/ 24 января 2019

Единственный способ, которым я знаю, как использовать научную нотацию для конца осей в matplotlib - это

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

но при этом будет использоваться 1e вместо x10. В приведенном ниже примере кода показано 1e6, но я хочу, чтобы x10 в степени 6, x10superscript6 (x10 ^ 6 с 6 маленькими и без ^). Есть ли способ сделать это?

edit: мне не нужны научные обозначения для каждого тика на оси (что выглядит не очень хорошо imho), только в конце, как показано в примере, но только с частью 1e6, измененной на x10superscript6.

Я пока не могу включить изображения.

Спасибо

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
x = np.linspace(0,1000)
y = x**2
plt.plot(x,y)
plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
plt.show()

1 Ответ

0 голосов
/ 25 января 2019

Смещение форматируется по-разному в зависимости от аргумента useMathText.Если True, то будет показано смещение в латексоподобном (MathText) формате как x 10^6 вместо 1e6

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
x = np.linspace(0,1000)
y = x**2
plt.plot(x,y)
plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0), useMathText=True)
plt.show()

enter image description here

Обратите внимание, что вышеописанное не будет работать для версии 2.0.2 (возможно, других более старых версий).В этом случае вам нужно установить форматер вручную и указать опцию:

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
x = np.linspace(0,1000)
y = x**2
plt.plot(x,y)
plt.gca().yaxis.set_major_formatter(plt.ScalarFormatter(useMathText=True))
plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...