[python] matplotlib에서 x 축 스케일 변경

Matlab을 사용하여이 플롯을 만들었습니다.

여기에 이미지 설명 입력

matplotlib를 사용하여 x 축은 100000, 200000, 300000과 같은 큰 숫자를 그립니다. 실제로 100000, 200000, 300000임을 나타 내기 위해 1, 2, 3 및 10 ^ 5와 같은 값을 갖고 싶습니다.

matplotlib에서 이러한 규모를 만드는 간단한 방법이 있습니까?



답변

다음을 사용해보십시오 matplotlib.pyplot.ticklabel_format.

import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))

a x 10^bx 축 눈금에 과학적 표기법 (예 :)을 적용합니다.


답변

이것은 귀하의 질문 본문에있는 쿼리 중 하나에 대한 원래 질문에 대한 답변이 아닙니다.

내 이름이 이상해 보이지 않도록 약간의 서문 :

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)


답변

스칼라 포맷터 지원은 지수를 수집. 문서는 다음과 같습니다.

class matplotlib.ticker.ScalarFormatter (useOffset = True, useMathText = False, useLocale = None) 기준 : matplotlib.ticker.Formatter

틱 위치는 평범한 오래된 숫자입니다. useOffset == True이고 데이터 범위가 데이터 평균보다 훨씬 작은 경우 눈금 레이블이 의미가 있도록 오프셋이 결정됩니다. 과학적 표기법은 데이터 <10 ^ -n 또는 데이터> = 10 ^ m에 사용됩니다. 여기서 n 및 m은 set_powerlimits ((n, m))를 사용하여 설정된 전력 한계입니다. 이들에 대한 기본값은 axes.formatter.limits rc 매개 변수에 의해 제어됩니다.

당신의 기술은 다음과 같습니다.

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^5ScalarFormatter를 useMathText=True.

애프터 이미지

다음을 사용할 수도 있습니다.

xfmt.set_useOffset(10000)

다음과 같은 결과를 얻으려면 :

여기에 이미지 설명 입력


답변

나는 간단한 해결책을 찾음

pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))


답변