我正在尝试在x轴上绘制日期图,在y轴上绘制值。它工作正常,但无法获得适当的X轴范围。尽管我的日期是今天,但x轴范围始终是2012年1月至2016年1月。我什至指定xlim应该是第一个和最后一个日期。
我正在为python-django写这个,如果相关的话。
import datetime import matplotlib.pyplot as plt x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)] y = [2, 4, 1] fig, ax = plt.subplots() ax.plot_date(x, y) ax.set_xlim([x[0], x[-1]]) canvas = FigureCanvas(plt.figure(1)) response = HttpResponse(content_type='image/png') canvas.print_png(response) return response
从OP看到实际数据后,所有值都在同一日期/时间。因此matplotlib自动将x轴缩小。你仍然可以手动设置datetime对象的x轴限制
datetime
如果我在matplotlib v1.3.1上做了类似的事情:
import datetime import matplotlib.pyplot as plt x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)] y = [2, 4, 1] fig, ax = plt.subplots() ax.plot_date(x, y, markerfacecolor='CornflowerBlue', markeredgecolor='white') fig.autofmt_xdate() ax.set_xlim([datetime.date(2014, 1, 26), datetime.date(2014, 2, 1)]) ax.set_ylim([0, 5])
我得到:
并且轴限制与我指定的日期匹配。