前提・実現したいこと
Pythonでmatplotlibを用いて二軸グラフを描画して、正しい位置に値が描画されるようにしたい。
1枚目の画像での、Validation Accuracyの点の位置を、Training LossやValidation Lossと同様に1から始まるようにしたいです。
発生している問題・エラーメッセージ
画像の、Validation AccuracyのXの値がずれてしまっています。
ソースコードで、.plot(df_stats[~~~],~~~)としているところですが、df_statsには以下の画像のようにデータが入っています。
該当のソースコード
Python3
1import matplotlib.pyplot as plt 2% matplotlib inline 3 4import seaborn as sns 5 6# seabornのプロットスタイルを使用 7sns.set(style='darkgrid', font_scale=1.5) 8# グラフの縦横サイズ:(横inch,縦inch) 9plt.rcParams["figure.figsize"] = (18,12) 10 11fig = plt.figure() 12ax1 = fig.subplots() 13ax2 = plt.twinx() 14 15# 学習曲線をプロット 16ax1.plot(df_stats['Training Loss'], 'b-o', label="Training Loss") 17ax1.plot(df_stats['Valid. Loss'], 'g-o', label="Validation Loss") 18ax2.plot(df_stats['Valid. Accur.'], 'r-o', label="Validation Accuracy") 19 20# プロットにラベル付け 21plt.title("Training Loss, Validation Loss & Accuracy") 22ax1.set_xlabel("Epoch") 23ax1.set_ylabel("Loss") 24ax2.set_ylabel("Accuracy") 25 26# 凡例の設定 27h1, l1 = ax1.get_legend_handles_labels() 28h2, l2 = ax2.get_legend_handles_labels() 29ax1.legend(h1 + h2, l1 + l2, bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0) 30 31# グラフのX軸の目盛りの数の設定 32plt.xticks(range(0, epochs+1)) 33 34plt.show()
補足情報(FW/ツールのバージョンなど)
Google Colabを使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。