LoginSignup
2
1

More than 3 years have passed since last update.

Pythonのseabornで描画したヒートマップ上に垂直線を引く方法

Posted at

はじめに

 ヒートマップは、横軸と縦軸に空間的な座標をとって表示することが良くあります。それに加え、横軸に時間、縦軸に周波数をとるSTFT(Short-Time Fourier Transform)の結果を描画するといったように、横軸を時間に取りたいという時があります。その時に、解析においてイベントがいつ発火したのかを図に入れるために、任意の場所に垂直線を入れたいなと思いました。seabornで垂直線を引く方法が、なかなか見つからなかったので備忘録として残しておきます。

目標

 ヒートマップに垂直線を入れる

方法

 普通にaxvlineを使って入れることが出来るらしい。ということで、実際にやってみた。

vline_heatmap.py
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# サンプルの配列作成
arr = np.random.rand(20, 20)

# ヒートマップの表示(左側)
fig, (ax1, ax2) = plt.subplots(1, 2)
sns.heatmap(arr, vmin=0, vmax=5, cmap="jet", ax=ax1)

# ヒートマップに垂直線を入れて表示(右側)
sns.heatmap(arr, vmin=0, vmax=5, cmap="jet", ax=ax2)
ax2.axvline(x=4, linewidth=2, color="w")

# 描画
plt.show()

描画結果

 左に垂直線なし、右側に垂直線ありの描画結果を示します。
Figure_1.png

ご意見など

 本記事のコメントに書いていただくか、以下のメールアドレスまでお願いします([at]を@に変えてください)。

akira.kashihara[at]hotmail.com

参考

1の記事を参考に、垂直線を調べて辿ったところ、2の記事に行き当たり、試してみました。
直接書いている他の記事などありましたら、教えていただけると助かります。

1) seabornを使ったグラフで、任意のy軸上の位置に横線を引く
2) matplotlib.pyplot.axvline

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1