web-dev-qa-db-ja.com

matplotlibのdatetimeでx軸の範囲を変更するにはどうすればよいですか?

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

出力は次のとおりです。 enter image description here

24
aled1027

編集:

OPからの実際のデータを見た後、すべての値は同じ日付/時刻にあります。したがって、matplotlibは自動的にx軸をズームアウトします。 datetimeオブジェクトを使用して、x軸の制限を手動で設定できます


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])

私は得る:

enter image description here

そして、軸の制限は、指定した日付と一致します。

26
Paul H