Pandas Dataframe ライン プロットの x 軸上の日付
問題:
プロットしようとしたときX 軸に日付を持つ Pandas DataFrame の場合、matplotlib ライブラリはデータに正しく対応しない不正確な書式設定と日付を生成します。
答え:
非互換性Pandas の datetime ユーティリティと Matplotlib の間の関係が、この問題の根本原因です。 Pandas は datetime オブジェクトに非標準の浮動小数点表現を使用しますが、これは Matplotlib 独自の日付書式設定メソッドと互換性がありません。
解決策:
この問題を解決するには、次の方法があります。考えられるアプローチは 2 つあります:
Pandas の日付書式設定を無効にする:
DataFrame をプロットするときに x_compat=True を設定すると、Pandas は Matplotlib の内部日付を使用します。書式設定メカニズムにより、X 軸の書式設定をより正確に制御できるようになります。
プロットと書式設定には Matplotlib のみを使用します:
依存する代わりにPandas で日付をプロットする場合は、Matplotlib 独自のメソッドを使用して日付値と書式設定を処理できます。これにより、柔軟性が向上し、必要に応じて日付の形式をカスタマイズできるようになります。
両方のアプローチを示す更新された例を次に示します。
<code class="python">import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as dates df = pd.DataFrame({'date': ['20170527', '20170526', '20170525'], 'ratio1': [1, 0.98, 0.97]}) df['date'] = pd.to_datetime(df['date']) usePandas = True # Either use Pandas if usePandas: df = df.set_index('date') ax = df.plot(x_compat=True, figsize=(6, 4)) ax.xaxis.set_major_locator(dates.DayLocator()) ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) ax.invert_xaxis() ax.get_figure().autofmt_xdate(rotation=0, ha="center") # or use Matplotlib else: fig, ax = plt.subplots(figsize=(6, 4)) ax.plot('date', 'ratio1', data=df) ax.xaxis.set_major_locator(dates.DayLocator()) ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) fig.invert_xaxis() plt.show()</code>
これらのいずれかを使用します。このアプローチを使用すると、正確な書式設定で Pandas DataFrame プロットの X 軸に日時値を効果的に表示できます。
以上がPandas DataFrame ライン プロットの X 軸に日付を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。