2015-03-21 15 views
18

Próbuję ustawić format na dwie liczby dziesiętne w środowisku subplot matplotlib. Niestety, nie mam pojęcia, jak rozwiązać to zadanie.Matplotlib: Określa format obiektów pływających dla obiektów zaznaczania znaków

Aby zapobiec użyciu notacji naukowej na osi Y, użyłem ScalarFormatter(useOffset=False), jak widać w poniższym fragmencie. Myślę, że moje zadanie powinno zostać rozwiązane przez przekazanie dalszych opcji/argumentów do używanego formatyzatora. Jednak nie znalazłem żadnej wskazówki w dokumentacji matplotlib.

Jak ustawić dwie cyfry dziesiętne lub żadną (potrzebne są obydwa przypadki)? Niestety nie jestem w stanie dostarczyć przykładowych danych.


- SNIPPET -

f, axarr = plt.subplots(3, sharex=True) 

data = conv_air 
x = range(0, len(data)) 

axarr[0].scatter(x, data) 
axarr[0].set_ylabel('$T_\mathrm{air,2,2}$', size=FONT_SIZE) 
axarr[0].yaxis.set_major_locator(MaxNLocator(5)) 
axarr[0].yaxis.set_major_formatter(ScalarFormatter(useOffset=False)) 
axarr[0].tick_params(direction='out', labelsize=FONT_SIZE) 
axarr[0].grid(which='major', alpha=0.5) 
axarr[0].grid(which='minor', alpha=0.2) 

data = conv_dryer 
x = range(0, len(data)) 

axarr[1].scatter(x, data) 
axarr[1].set_ylabel('$T_\mathrm{dryer,2,2}$', size=FONT_SIZE) 
axarr[1].yaxis.set_major_locator(MaxNLocator(5)) 
axarr[1].yaxis.set_major_formatter(ScalarFormatter(useOffset=False)) 
axarr[1].tick_params(direction='out', labelsize=FONT_SIZE) 
axarr[1].grid(which='major', alpha=0.5) 
axarr[1].grid(which='minor', alpha=0.2) 

data = conv_lambda 
x = range(0, len(data)) 

axarr[2].scatter(x, data) 
axarr[2].set_xlabel('Iterationsschritte', size=FONT_SIZE) 
axarr[2].xaxis.set_major_locator(MaxNLocator(integer=True)) 
axarr[2].set_ylabel('$\lambda$', size=FONT_SIZE) 
axarr[2].yaxis.set_major_formatter(ScalarFormatter(useOffset=False)) 
axarr[2].yaxis.set_major_locator(MaxNLocator(5)) 
axarr[2].tick_params(direction='out', labelsize=FONT_SIZE) 
axarr[2].grid(which='major', alpha=0.5) 
axarr[2].grid(which='minor', alpha=0.2) 

Odpowiedz

47

Zobacz odpowiedniej dokumentacji w general i specifically

from matplotlib.ticker import FormatStrFormatter 

fig, ax = plt.subplots() 

ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f')) 

enter image description here

+0

UWAGA: Jeśli wolisz używać nowego '.format () 'specyfikatory stylu, możesz użyć' StrMethodFormatter' wspomnianego na [połączonym pag e] (http://matplotlib.org/api/ticker_api.html#matplotlib.ticker.StrMethodFormatter) – mangecoeur

+0

Spiskuję z 'imshow' i to nie działa dla mnie. Próbowałem również 'plt.gca(). Yaxis.set_major_formatter (FormatStrFormatter ('%. G'))) z [tej odpowiedzi] (https://stackoverflow.com/questions/42929550/ticks-format-of- oś-w-matplotlib), ale bezskutecznie. Jakieś pomysły? – airdas

+0

@airdas Jeśli napotkasz problem, zadaj nowe pytanie na jego temat, podając wszystkie szczegóły i [mcve] problemu. – ImportanceOfBeingErnest

Powiązane problemy