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^b
x 축 눈금에 과학적 표기법 (예 :)을 적용합니다.
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)
스칼라 포맷터 지원은 지수를 수집. 문서는 다음과 같습니다.
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^5
ScalarFormatter를 useMathText=True
.
다음을 사용할 수도 있습니다.
xfmt.set_useOffset(10000)
다음과 같은 결과를 얻으려면 :
useMathText=True
얻는을 x10^4
.