Я создал этот сюжет с помощью Matlab
Используя matplotlib, оси x рисуют большие числа, такие как 100000, 200000, 300000. Я хотел бы иметь что-то вроде 1, 2, 3 и 10 ^ 5, чтобы указать, что на самом деле это 100000, 200000, 300000.
Есть ли простой способ создать такой масштаб в matplotlib?
python
matplotlib
Орел
источник
источник
ticklabel_format
также метод для объектов осей, вы можете попробовать что-то вродеax.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
[0.1, 0.2, ...]
и я бы предпочел[1, 2, ...]
с скорректированной экспонентой. Вы смогли найти решение для этого?Это не столько ответ на ваш исходный вопрос, сколько один из вопросов, которые вы задали в теле вашего вопроса.
Небольшая преамбула, чтобы мое название не показалось странным:
import matplotlib from matplotlib import rc from matplotlib.figure import Figure ax = self.figure.add_subplot( 111 )
Как уже упоминалось, вы можете использовать ticklabel_format, чтобы указать, что matplotlib должен использовать научную нотацию для больших или малых значений:
ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')
Вы можете повлиять на способ, которым это отображается, используя флаги в rcParams (из matplotlib import rcParams) или задав их напрямую. Я не нашел более элегантного способа переключения между научными обозначениями '1e' и 'x10 ^', чем:
ax.xaxis.major.formatter._useMathText = True
Это должно дать вам больше Matlab-esc и, возможно, лучший внешний вид. Я думаю, что следующее должно делать то же самое:
rc('text', usetex=True)
источник
В скалярных Formatter поддерживают сбор экспонента. Документы следующие:
ваша техника будет:
from matplotlib.ticker import ScalarFormatter xfmt = ScalarFormatter() xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . . {{ Make your plot }} gca().xaxis.set_major_formatter(xfmt)
Чтобы отобразить показатель степени в формате
x10^5
, создайте экземпляр ScalarFormatter с помощьюuseMathText=True
.Вы также можете использовать:
xfmt.set_useOffset(10000)
Чтобы получить такой результат:
источник
useMathText=True
getx10^4
.Я нахожу простое решение
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))
источник