# Matplotlib xaxis label tweak import sys import matplotlib from matplotlib import pylab, ticker ROTATION=75 DASHROTATION=75 DASHBASE=10 DASHLEN=35 DASHSTAGGER=3 FONTSIZE=6 def dashlen(step): return DASHBASE+(DASHLEN*(step%DASHSTAGGER)) def test_dashticklabel(): pylab.clf() x = [0.0, 1.0, 1.1, 5.0, 5.1, 6.0] y = [1, 3, 2, 5, 1, 2] labels = ['foo', 'bar', 'baz', 'alpha', 'beta', 'gamma'] locator = ticker.FixedLocator(x) formatter = ticker.FixedFormatter(labels) axis = pylab.axes([0.3, 0.3, 0.4, 0.4]) axis.xaxis.set_major_locator(locator) axis.xaxis.set_major_formatter(formatter) axis.yaxis.set_major_locator(locator) axis.yaxis.set_major_formatter(formatter) for tick in axis.xaxis.get_major_ticks(): tick.label2On = True for tick in axis.yaxis.get_major_ticks(): tick.label2On = True step = 0 for label in axis.get_xticklabels(): pylab.setp(label, rotation=ROTATION, dashlength=dashlen(step), dashrotation=DASHROTATION, fontsize=FONTSIZE, ) step += 1 step = 0 for label in axis.get_yticklabels(): pylab.setp(label, rotation=90-ROTATION, dashlength=dashlen(step), dashrotation=90-DASHROTATION, fontsize=FONTSIZE, ) step += 1 pylab.xlabel('X Label') pylab.ylabel('Y Label') pylab.plot(x, y) axis.set_xlim((0.0, 6.0)) axis.set_ylim((0.0, 6.0)) pylab.savefig('dashticklabel') pylab.show() if __name__ == '__main__': test_dashticklabel()