はじめに
ヒートマップは、横軸と縦軸に空間的な座標をとって表示することが良くあります。それに加え、横軸に時間、縦軸に周波数をとる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()
描画結果
ご意見など
本記事のコメントに書いていただくか、以下のメールアドレスまでお願いします([at]を@に変えてください)。
akira.kashihara[at]hotmail.com
参考
1の記事を参考に、垂直線を調べて辿ったところ、2の記事に行き当たり、試してみました。
直接書いている他の記事などありましたら、教えていただけると助かります。