Pandas 折れ線グラフの x 軸に日付を表示するには、set_index () メソッドを使用して、日付値を含む列を DataFrame のインデックスに変換できます。ただし、matplotlib の DateFormatter 関数を使用して日付の書式を設定する場合、特定の問題が発生する可能性があります。
以下の画像は、DateFormatter をコードに追加する場合の問題を示しています。
[日付の書式設定が正しくない折れ線グラフの画像]
日付が 5-25 ではなく 5-24 から始まり、木曜日が 2017 年の 5-25 として誤ってラベル付けされていることに注意してください。これは多くの場合、タイムゾーンが原因です。 pandas と matplotlib datetime ユーティリティ間の関連問題または非互換性。
Pandas と matplotlib datetime オブジェクトには一般に互換性がありません。 pandas で作成された日付軸で matplotlib 日付オブジェクトを使用しようとすると、問題が発生する可能性があります。
この理由の 1 つは、pandas の datetime オブジェクトが、0001 から 01 までの日数を表す浮動小数点数に変換されることです。 -01 UTC、プラス 1。この形式は matplotlib の datetime 形式とは異なります。
日付形式の問題を解決するには、x_compat=True 引数を次のように指定できます。これは、plot() メソッドに渡されます。これは、パンダに独自の日時形式を使用しないように指示し、matplotlib のティッカー、ロケーター、およびフォーマッタを使用できるようにします。
あるいは、より正確な日時形式が必要な場合は、matplotlibプロットと書式設定の両方に使用できます。次のコード スニペットは、このアプローチを示しています。
<code class="python">import matplotlib.pyplot as plt import matplotlib.dates as dates # Create the DataFrame df = pd.DataFrame({'date':['20170527','20170526','20170525'],'ratio1':[1,0.98,0.97]}) df['date'] = pd.to_datetime(df['date']) # Create the line plot plt.plot(df['date'], df['ratio1']) # Set major locator and formatter for the x-axis plt.gca().xaxis.set_major_locator(dates.DayLocator()) plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a')) # Invert the x-axis for chronological order plt.gca().invert_xaxis() # Autofmt the x-axis for optimal placement of dates plt.gcf().autofmt_xdate(rotation=0, ha="center") # Display the plot plt.show()</code>
この改訂されたコードは、X 軸に正確にフォーマットされた日付を持つ折れ線グラフを生成します。
以上がPandas ライン プロットの X 軸に日付を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。