はじめに
データの可視化のためにmatplolibでグラフを作成した時に問題発生
X軸が日付を表しています
2023-01-01、2023-01-02、2023-01-03、、、と日付が続き、黒く塗りつぶされたように表示されました。
問題のコード
import pandas as pd
import matplotlib.pyplot as plt
list = [('2023-01-01', 100), ('2023-01-02', 110), ('2023-01-03', 120), ...]
df = pd.DataFrame(list, columns=['date', 'price'])
plt.figure()
plt.show()
X軸の日付を設定しているので、このまま表示すると1日ずつの日付がX軸に表示されて、
前述の画像のように黒く塗りつぶされたような表示になりました。
改善したコード
X軸の日付形式は2023-01-01のように、yyyy-mm-dd形式なので、
yyyy-mm形式で1ヶ月ごとに表示されるようにします。
日付の値が含まれているDataFrameの'date'の型はstr型に入っていると問題の表示になるようです
なので、str型からdatetime型に変換します
import pandas as pd
import matplotlib.pyplot as plt
list = [('2023-01-01', 100), ('2023-01-02', 110), ('2023-01-03', 120), ...]
df = pd.DataFrame(list, columns=['date', 'price'])
plt.figure()
# str型からdatetime型に変換
df['date'] = pd.to_datetime(df['date'])
plt.show()
X軸の塗りつぶしがなくなり、yyyy-mm形式で見た目よく表示されています
おわりに
matplotlibでグラフ化する時には、str型だと綺麗に表示されないので注意が必要です