2013-07-18 11 views
8

Dies scheint, wie es sollte einfach sein - aber ich kann nicht sehen, wie es geht:matplotlib: zeichnet große Strichbeschriftungen unter kleineren Labels

Ich habe ein Grundstück mit der Zeit auf der X-Achse. Ich möchte zwei Sätze von Zecken setzen, kleine Zecken, die die Stunde des Tages zeigen, und große Zecken, die den Tag/Monat anzeigen. Also ich dies tun:

# set date ticks to something sensible: 
xax = ax.get_xaxis() 
xax.set_major_locator(dates.DayLocator()) 
xax.set_major_formatter(dates.DateFormatter('%d/%b')) 

xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3))) 
xax.set_minor_formatter(dates.DateFormatter('%H')) 

Diese Etiketten die Zecken in Ordnung, aber die großen tick Etiketten (Tag/Monat) sind oben auf den kleinen Hilfsstriche gezogen:

Sig. wave height ensemble time series

Wie kann ich Erzwingen Sie, dass die großen Tick-Label unter die kleineren Ticks geplottet werden. Ich habe versucht, Newline-Escape-Zeichen (\ n) im DateFormatter einzufügen, aber es ist eine schlechte Lösung, da der vertikale Abstand nicht ganz richtig ist.

Jeder Rat würde geschätzt werden!

Antwort

15

Sie können axis Methode set_tick_params() mit dem Schlüsselwort pad verwenden. Vergleichen Sie folgendes Beispiel.

import datetime 
import random 
import matplotlib.pyplot as plt 
import matplotlib.dates as dates 

# make up some data 
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(100)] 
y = [i+random.gauss(0,1) for i,_ in enumerate(x)] 

# plot 
plt.plot(x,y) 
# beautify the x-labels 
plt.gcf().autofmt_xdate() 

ax = plt.gca() 
# set date ticks to something sensible: 
xax = ax.get_xaxis() 
xax.set_major_locator(dates.DayLocator()) 
xax.set_major_formatter(dates.DateFormatter('%d/%b')) 

xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3))) 
xax.set_minor_formatter(dates.DateFormatter('%H')) 
xax.set_tick_params(which='major', pad=15) 

plt.show() 

PS: Dieses Beispiel aus moooeeeep


hier entlehnt ist, wie das obige Snippet machen würde:

+0

Perfect- es Ihnen danken! – ccbunney

Verwandte Themen