Sprawdź sobie to:
import pylab as pl
import datetime
data = """0 14-11-2003
1 15-03-1999
12 04-12-2012
33 09-05-2007
44 16-08-1998
33 09-05-2007
44 16-08-1998
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014
33 09-05-2007
44 16-08-1998
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014"""
values = []
dates = []
for line in data.split("\n"):
x, y = line.split()
values.append(int(x))
dates.append(datetime.datetime.strptime(y, "%d-%m-%Y").date())
fig = pl.figure(dpi=60,figsize=(18, 10))
ax = fig.add_subplot(1,1,1)
fig.subplots_adjust(left=0.1, right=0.95, top=0.95, bottom=0.2)
ax.bar(range(len(dates)), values, facecolor='#777777',
align='center', width=0.5, ecolor='black')
pl.axis('tight')
ax.set_xticks(range(len(dates)))
pl.yticks(values)
ax.set_xticklabels(dates, rotation = 90)
pl.show()
Trochę się naszukałem, żeby zmienić marginesy wykresu (przy samym usunięciu fig.autofmt_xdate() u mnie daty wyjeżdżały poza obszar rysowania).
A co do odstępów między datami to spróbuj w linijce fig = pl.figure(dpi=60,figsize=(18, 10)) zwiększyć pierwszą wartość figsize, co prawda jest to obejście w dużym stopniu zależne od ilości miejsca na ekranie, ale oprócz tego znalazłem tylko pl.axis('scaled'), pl.axis('tight'), pl.axis('auto'), pl.axis('equal'), możesz pokombinować z tymi parametrami. IMHO najlepiej wykres wygląda na tight ;)
BTW. ja sam dopiero do tego tematu zacząłem używać matplotlib, wcześniej znałem Python'a, może ktoś, kto korzystał z tego modułu na poważnie, będzie potrafił udzielić bardziej trafnej odpowiedzi ;)