Peter Pearson <pkpearson@nowhere.invalid> writes: > The following code produces a plot with a line running from (9:30, 0) to > (10:30, 1), not from (8:30, 0) to (9:30, 1) as I desire. > > If I use timezone None instead of pacific, the plot is as desired, but > of course that doesn't solve the general problem of which this is a > much-reduced example. > > If I use timezone US/Central, I get the same (bad) plot. > > import matplotlib.pyplot as plt > import datetime > import pytz > pacific = pytz.timezone("US/Pacific") > fig = plt.figure() > plt.plot([datetime.datetime(2014, 10, 7, 8, 30, tzinfo=pacific), > datetime.datetime(2014, 10, 7, 9, 30, tzinfo=pacific)], > [0,1], marker="o", color="green") > fig.autofmt_xdate() > plt.show() > > Does anybody know why this shift is occurring? Is Matplotlib > confused about what timezone to use in labeling the axis? How > would I tell it what timezone to use (preferably explicitly in > the code, not in matplotlibrc)? >
Your pytz usage is incorrect. Don't pass a pytz tzinfo object to the datetime construtor directly, use `.localize()` method instead. Read the note at the very beginning of pytz docs http://pytz.sourceforge.net/ -- https://mail.python.org/mailman/listinfo/python-list