# this should work, but apparently we have to convert toordinal() for this to work.
# see
from matplotlib.dates import YearLocator, DateFormatter
import datetime
data=[
(datetime.date( 1995, 1, 1 ), 30),
(datetime.date( 1996, 3, 1 ), 50),
(datetime.date( 1997, 2, 4 ), 40),
]
list_plot([(i.toordinal(), j) for i,j in data],ticks=[YearLocator(),None],tick_formatter=[DateFormatter('%Y-%m-%d'),None])