[matplotlib] Overlapping axis text

Durand durand1 at gmail.com
Sat Sep 6 17:58:57 CEST 2008


I got a really annoying problem with datetime graphs. The problem is
that with a long range time graph, the text on the x axis keeps
overlapping like here: http://durand.zephyrhosting.net/tremcs/graph_all.png

Would there be any way to fix this? I was thinking of rotating the
text so that there was enough space for each one but the best solution
would be to only display text with the right scale. IE, with a 7 day
graph, each day would have text, with a year long graph, each month
would be displayed, etc...

This is the code I use at the moment but its pretty messy:

import dateutil,pylab
from matplotlib.dates import MonthLocator, WeekdayLocator

fig = pylab.figure()
ax = fig.add_subplot(111)
days    = MonthLocator()   # every monday
months   = MonthLocator()  # every month
ax.xaxis.set_major_locator(months)
ax.xaxis.set_minor_locator(days)

pylab.plot_date(pylab.date2num(dates), allkills, '.-', color='blue')
        pylab.plot_date(pylab.date2num(dates), alldeaths, '.-',
color='red')
        pylab.plot_date(pylab.date2num(dates), kills, '.-',
color='darkgreen')
        pylab.plot_date(pylab.date2num(dates), deaths, '.-',
color='orange')
        if legend == 1:
            pylab.legend(("Total Kills","Total Deaths", "Single
Session Kills", "Single Session Deaths"), 'lower left')
        pylab.xlabel('Date')
        pylab.ylabel('Stats')
        ax2 = pylab.twinx()
        pylab.plot_date(pylab.date2num(dates), allratio, '.-',
color='purple')
        pylab.plot_date(pylab.date2num(dates), ratio, '.-',
color='yellow')
        pylab.ylabel('Ratio')
        ax2.yaxis.tick_right()
pylab.show()
Please excuse the extra tabbing, it's part of an if statement.



More information about the Python-list mailing list