これでもう悩まない!Pythonで散布図+縦プロット+色違いの点+ファイル保存を実現する方法
目次
この記事を読んでわかること
こういうグラフをプロットする方法 & プロットするためのコード

コード
python 3.7で実行してます。
どうやってこのグラフをプロットするの?
やりたいことをリンクで紹介しながら、説明していきますね。
seabornで縦に積み重ねるプロットを実現したいのだけど?
matplotlibの機能を使う、と説明されている。
matplotlibの機能はこのドキュメント。
プロットごとに別のタイトルをつけたい
seaborn scatterplotで特定の点に色をつけたいのだけど?
この記事冒頭のサンプル図のように、1点だけを別の色で表現したいときに使う小技。
答えは簡単。そういうデータフレームを作ればいい。
例えば、上の例ではこんなデータフレームを用意している。
x | y | label |
float | float | point |
float | float | * |
seabornで作成した図をファイルに書き出ししたいのだけど?
matplotlibの機能を使う。なぜならseabornはmatplotlibのwrapperだから。
縦積み重ねのscatterplotに範囲をつけたいのだけれど?
axisオブジェクトのsetメソッドを使う。
今回の例では、すべてのscatterplotに同じ最大、最小範囲を適用したい。さらに、特別な点も存在している。
それを含めて最小・最大の値を得るために次の操作をする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 散布図の最大値、最小値を決定 history_x_lim = [np.min(x_tensor[:, :, 0].flatten()), np.max(x_tensor[:, :, 0].flatten())] history_y_lim = [np.min(x_tensor[:, :, 1].flatten()), np.max(x_tensor[:, :, 1].flatten())] if mark_value[0] < history_x_lim[0]: history_x_lim[0] = mark_value[0] elif history_x_lim[1] < mark_value[1]: history_x_lim[1] = mark_value[1] if mark_value[1] < history_y_lim[0]: history_y_lim[0] = mark_value[1] elif history_y_lim[1] < mark_value[1]: history_y_lim[1] = mark_value[1] |
こんな記事を書こうとおもったきっかけ
最適化コードを書いていて、バグを解決できない・・・・だから、最適化アルゴリズムがオラクルに達するまでの様子を可視化してみようと思った。
だから、イテレーションの要素と1つだけ色をつけた点が必要だった。
で、Seabornを使ったらすぐにできるんやろ?と思ったら、案外にも時間がかかってしまった。同じことを調べなおすのは時間の無駄。
ということで記事にして残しておこうと思った。
ディスカッション
コメント一覧
まだ、コメントがありません