日付と値のペアで構成されるデータセットがあります。 x軸に特定の日付を含む棒グラフにそれらをプロットしたいと思います。
私の問題は、matplotlib
がxticks
を日付範囲全体に分散することです。また、ポイントを使用してデータをプロットします。
日付はすべてdatetime
オブジェクトです。データセットのサンプルは次のとおりです。
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
pyplot
を使用した実行可能なコードサンプルを次に示します。
import datetime as DT
from matplotlib import pyplot as plt
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
graph.plot_date(x,y)
plt.show()
質問の概要:
私の状況は、Axes
インスタンスの準備ができている(上記のコードではgraph
によって参照されている)ようなもので、次のことを実行したいと思います。
xticks
を正確な日付値に対応させます。 matplotlib.dates.DateLocator
について聞いたことがありますが、それを作成して特定のAxes
オブジェクトに関連付ける方法がわかりません。あなたがしていることは十分に単純なので、plot_dateよりもplotを使用するのが最も簡単です。 plot_dateはより複雑なケースに最適ですが、必要な設定はそれなしで簡単に実行できます。
例:上記の例に基づく:
_import datetime as DT
from matplotlib import pyplot as plt
from matplotlib.dates import date2num
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date2num(date) for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
# Plot the data as a red line with round markers
graph.plot(x,y,'r-o')
# Set the xtick locations to correspond to just the dates you entered.
graph.set_xticks(x)
# Set the xtick labels to correspond to just the dates you entered.
graph.set_xticklabels(
[date.strftime("%Y-%m-%d") for (date, value) in data]
)
plt.show()
_
棒グラフが必要な場合は、 plt.bar()
を使用してください。線とマーカーのスタイルを設定する方法を理解するには、 plt.plot()
マーカーの場所に日付ラベルを付けてプロットするhttp://www.geology.wisc.edu/~)を参照してください。 jkington/matplotlib_date_labels.png