2012-07-20 33 views

cevap

80

matplotlib.pyplot.ticklabel_format kullanmayı deneyin: Bu, x-eksenine (yani a x 10^b) bilimsel gösterim geçerlidir

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

+1

, teşekkürler. – Eagle

+6

Bir ofset eklemek mümkün mü? (örneğin, 0,0, 0,5, 1,0, 1,5, ... ve x 10^b yerine 0, 5, 10, 15, ... ve x 10^{b-1}) – Eagle

+9

'ticklabel_format 'da olacaktır. axes nesneleri için bir yöntem, 'ax.ticklabel_format (style = 'sci', eksen = 'x', scilimits = (0,0)) gibi bir şey deneyebilirsiniz' – Covich

11

scalar formatter üslerin toplama destekler tickmarks.

sınıf matplotlib.ticker.ScalarFormatter (useOffset = Doğru, useMathText = False, useLocale = Yok) Üsleri: şu şekildedir: docs olan matplotlib.ticker.Formatter

Kene yeri düz eski sayıdır . UseOffset == True ve veri aralığı, veri ortalamasından çok daha küçükse, o zaman onay etiketleri anlamlı olacak şekilde bir ofset belirlenir. Scientific notasyonu, < 10^-n veya data> = 10^m verisi için kullanılır; burada n ve m, set_powerlimits ((n, m)) kullanılarak belirlenen güç limitleridir. Bu için varsayılanlar, axes.formatter.limits rc parametresi tarafından kontrol edilir.

senin tekniği olacaktır:

xfmt = ScalarFormatter() 
xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . . 
{{ Make your plot }} 
gca().xaxis.set_major_formatter(xfmt) 

, biçim x10^5 görüntülenen üs olsun useMathText=True ile ScalarFormatter somutlaştırmak için.

After Image

Ayrıca kullanabilirsiniz:

xfmt.set_useOffset(10000) 

böyle bir sonuç almak için: enter image description here

+0

i ilgileniyorum, ama ben '1e4' yerine 'x10^4' tercih ediyorum – Eagle

+0

Katılıyorum. Ve mümkün olduğuna eminim, ama nasıl olduğunu bilmiyorum. –

+2

ScalarFormatter öğesini 'x10^4' için' useMathText = True' ile örnekleyin. –

8

Ben basit bir çözüm bulmak

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

Bu, orijinal sorunuza, sorunuzun bedeninde yaptığınız sorgulardan biri için çok fazla bir cevap değildir.

Biraz önsöz, benim adlandırma garip görünmüyor böylece:

import matplotlib 
from matplotlib import rc 
from matplotlib.figure import Figure 
ax = self.figure.add_subplot(111) 

Eğer büyük ya da küçük değerler için bilimsel gösterim kullanması gerektiğini matplotlib belirtmek için ticklabel_format kullanabilirsiniz bahsedildiği gibi:

ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both') 

Bunun, rcParams'daki (matplotlib import rcParams öğesinden) bayraklar kullanılarak veya doğrudan ayarlanarak görüntülenmesinin şeklini etkileyebilirsiniz.

ax.xaxis.major.formatter._useMathText = True 

Bu size daha fazla Matlab-esc vermek, ve aslında belki daha iyi görünüm olmalıdır: Ben '1e' ve daha 'x10 ^' bilimsel gösterim arasında değişen daha şık bir yol bulmuş değil. Bence aşağıdakileri yapmalısınız:

rc('text', usetex=True) 
+0

evet güzel değil ama çalışıyor, teşekkürler! –

+0

ve hala çalışıyor :-) – uhoh

İlgili konular

 İlgili konular