Ответ 1
Попробуйте использовать matplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
Это относится к научной нотации (т.е. a x 10^b
) к вашим метокам x-axis
Я создал этот график, используя Matlab
Используя matplotlib, x-axies рисует большие числа, такие как 100000, 200000, 300000. Я хотел бы иметь что-то вроде 1, 2, 3 и 10 ^ 5, чтобы указать, что это фактически 100000, 200000, 300000.
Есть ли простой способ создать такой масштаб в matplotlib?
Попробуйте использовать matplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
Это относится к научной нотации (т.е. a x 10^b
) к вашим метокам x-axis
Это не столько ответ на ваш первоначальный вопрос, сколько один из вопросов, которые у вас были в теле вашего вопроса.
Маленькая преамбула, так что мое имя не кажется странным:
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) или путем установки их непосредственно. Я не нашел более элегантный способ изменения между "1е" и "x10 ^" научной нотацией, чем:
ax.xaxis.major.formatter._useMathText = True
Это должно дать вам больше Matlab-esc и, возможно, лучший внешний вид. Я думаю, что следующее должно сделать то же самое:
rc('text', usetex=True)
Скалярный форматтер поддерживает сбор экспонентов. Документы выглядят следующим образом:
class matplotlib.ticker.ScalarFormatter(useOffset = True, useMathText = False, useLocale = Нет) Основы: matplotlib.ticker.Formatter
Расположение тиков - это простой старый номер. Если useOffset == True и данные диапазон намного меньше среднего значения данных, тогда смещение будет определяется так, что метки тика имеют смысл. научный нотация используется для данных < 10 ^ -n или data >= 10 ^ m, где n и m являются ограничения мощности, установленные с помощью set_powerlimits ((n, m)). По умолчанию для они управляются параметром axes.formatter.limits rc.
Ваша техника будет:
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)
Чтобы получить такой результат:
Я нахожу простое решение
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))