Matplotlib による日付のプロット作成

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python の Matplotlib を使って日付のプロットを作成する方法を学びます。matplotlib.dates モジュールを使って、datetime オブジェクトを Matplotlib の内部表現に変換します。また、x 軸の目盛りラベルを読みやすい形式で日付を表示するようにフォーマットする方法も学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使って練習します。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

必要なライブラリをインポートして始めましょう。これには、matplotlib.pyplotmatplotlib.cbook、および matplotlib.dates が含まれます。

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates

データを読み込む

次に、プロットしたいデータを読み込みます。mpl-data/sample_data ディレクトリからの Yahoo csv データの numpy レコード配列を使用します。このレコード配列は、日付列に日単位 ('D') の np.datetime64 として日付を格納しています。

data = cbook.get_sample_data('goog.npz')['price_data']

サブプロットを作成する

目盛りラベルの異なるフォーマットオプションを表示するために、3つのサブプロットを作成します。

fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), layout='constrained')

データをプロットする

plot 関数を使って、すべての3つのサブプロットにデータをプロットします。

for ax in axs:
    ax.plot('date', 'adj_close', data=data)
    ax.grid(True)
    ax.set_ylabel(r'Price [\$]')

デフォルトのフォーマッタを使って目盛りラベルをフォーマットする

最初のサブプロットの目盛りラベルを、デフォルトのフォーマッタを使ってフォーマットします。

ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())

簡潔なフォーマッタを使って目盛りラベルをフォーマットする

2番目のサブプロットの目盛りラベルを、簡潔なフォーマッタを使ってフォーマットします。

ax = axs[1]
ax.set_title('ConciseFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))

手動で目盛りラベルをフォーマットする

datetime.date.strftime に記載されているフォーマット文字列で日付をフォーマットするために、DateFormatter を使って3番目のサブプロットの目盛りラベルを手動でフォーマットします。

ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
for label in ax.get_xticklabels(which='major'):
    label.set(rotation=30, horizontalalignment='right')

グラフを表示する

最後に、show 関数を使ってグラフを表示します。

plt.show()

まとめ

この実験では、Python の Matplotlib を使って日付のグラフを作成する方法を学びました。matplotlib.dates モジュールを使って、datetime オブジェクトを Matplotlib の内部表現に変換しました。また、x 軸の目盛りラベルをフォーマットして、日付を読みやすい形式で表示する方法も学びました。