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