2013-07-02 18 views
8

Używam autofmt_xdate do drukowania długich etykiet osi X w czytelny sposób. Problem polega na tym, że gdy chcę łączyć różne wątki, znikają etykiety na osi X pozostałych wątków, których nie doceniam za lewy subplot na poniższym rysunku (wysoki na dwa wiersze). Czy istnieje sposób, aby uniemożliwić autofmt_xdate gaszenie innych etykiet osi X? Czy istnieje inny sposób obracania etykiet? Jak widać, eksperymentowałem z xticks i "obracałem", ale wyniki nie były satysfakcjonujące, ponieważ etykiety obracały się wokół ich środka, co skutkowało niechlujnym etykietowaniem.autofmt_xdate usuwa etykiety osi X ze wszystkich podpól

Script, która produkuje wykres poniżej:

from matplotlib import pyplot as plt 
from numpy import arange 
import numpy 
from matplotlib import rc 

rc("figure",figsize=(15,10)) 
#rc('figure.subplot',bottom=0.1,hspace=0.1) 
rc("legend",fontsize=16) 
fig = plt.figure() 


Test_Data = numpy.random.normal(size=20) 

fig = plt.figure() 
Dimension = (2,3) 
plt.subplot2grid(Dimension, (0,0),rowspan=2) 
plt.plot(Test_Data) 
plt.subplot2grid(Dimension, (0,1),colspan=2) 
for i,j in zip(Test_Data,arange(len(Test_Data))): 
    plt.bar(i,j) 
plt.legend(arange(len(Test_Data))) 
plt.subplot2grid(Dimension, (1,1),colspan=2) 
xticks = [r"%s (%i)" % (a,b) for a,b in zip(Test_Data,Test_Data)] 
plt.xticks(arange(len(Test_Data)),xticks) 
fig.autofmt_xdate() 
plt.ylabel(r'$Some Latex Formula/Divided by some Latex Formula$',fontsize=14) 
plt.plot(Test_Data) 
#plt.setp(plt.xticks()[1],rotation=30) 
plt.tight_layout() 
#plt.show() 

Figure created by script

Odpowiedz

6

Właściwie jest to cechą sposobu autofmt_xdate. Z dokumentacji metody autofmt_xdate:

Dni ticklebels często nakładają się, więc warto je obracać i wyrównywać w prawo. Ponadto powszechnym przypadkiem użycia jest liczba podpól ze wspólnymi xaxami, w których oś X jest datowana. Dotykowe znaczniki są często długie i pomagają obrócić je na dolnym wątku i wyłączyć na innych podpozycjach, a także wyłączyć xlabele.

Jeśli chcesz obrócić xticklabels z prawym dolnym tylko poletko, użyj

plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment 

Ten obraca ticklabels 30 stopni w prawo dostosowuje do nich (taki sam wynik jak przy korzystaniu autofmt_xdate) w prawym dolnym rogu subplot, pozostawiając dwie pozostałe partycje niezmienione.

Powiązane problemy