93324


以下を実行して、折れ線グラフを生成しました。  
凡例の中の時間 YYYY-MM-DD のフォーマット（日付のみ、時間なし）にしたいなら、どこを直せばいですか？

[code]

    for i in range(0,10) :
        df04.plot(figsize=(8, 6))
        plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
        plt.ticklabel_format(style='plain',axis='y')
        plt.savefig(fig_name, bbox_inches="tight", pad_inches=0.25) 
        plt.close()
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/O5fky.jpg)](https://i.stack.imgur.com/O5fky.jpg)


CC BY-SA 4.0
2023-01-12T02:45:38.377
93311
2023-01-13T14:41:21.760
2023-01-12T05:17:21.850
3060
56371
question
python pandas
時系列の凡例のフォーマット (日時表示) を変更したい


御質問へのコメントを参考にさせていただき，手持ちの類似データで

[code]

    # plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
    plt.legend(labels=df04.columns.date,
               loc='upper left', bbox_to_anchor=(1, 1))
    
[/code]

を試したところ所望の結果は得られたのですが，[matplotlib.pyplot.legend](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html)
によると（プロット要素との暗黙の対応でラベルを付ける）この形式は非推奨のようです。そこで，ラベルを取り出して加工する記述例と（類似データの）描画結果を示します。

[code]

    ax = df04.plot(figsize=(8, 6))
    hndls, lbls = ax.get_legend_handles_labels()
    lbls = [s.split()[0] for s in lbls]  # YYYY-MM-DD
    # lbls = [s.split()[0][5:] for s in lbls]  # MM-DD
    ax.legend(handles=hndls, labels=lbls,
              loc='upper left', bbox_to_anchor=(1, 1))
    ax.ticklabel_format(style='plain', axis='y')
    plt.savefig(fig_name, bbox_inches="tight", pad_inches=0.25)
    plt.close()
    
[/code]

[![描画結果](https://i.stack.imgur.com/XVZwa.png)](https://i.stack.imgur.com/XVZwa.png)


CC BY-SA 4.0
2023-01-13T11:10:20.613
93324
2023-01-13T14:41:21.760
2023-01-13T14:41:21.760
54588
54588
93311
answer