Python
 Computer >> コンピューター >  >> プログラミング >> Python

Seabornで2つのヒートマップを1つの図に組み合わせる方法

Pythonの可視化ライブラリ「Seaborn」を使えば、異なるデータフレームから作成した2つのヒートマップを、1つの図に並べて表示できます。この記事では、その具体的な手順をサンプルコード付きで解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • Pandasを使って2つのデータフレームを作成します。

  • plt.subplots()で図と2つのサブプロット(ax1ax2)を生成します。

  • sns.heatmap()を使い、矩形データを色分けされたマトリクスとしてax1ax2にそれぞれ描画します。

  • 目盛り(ticks)と目盛りラベル(ticklabels)が存在する場合は、軸の右側に移動させます。

  • サブプロット間の余白の幅を、平均的な軸幅に対する割合として最小限に抑えます。

  • 最後にshow()メソッドを呼び出して図を表示します。

サンプルコード

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 2つのランダムなデータフレームを作成
df1 = pd.DataFrame(np.random.rand(10, 4), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.rand(10, 4), columns=list("WXYZ"))

# 横に2つ並べたサブプロットを作成
fig, (ax1, ax2) = plt.subplots(ncols=2)
fig.subplots_adjust(wspace=0.01)

# 各サブプロットにヒートマップを描画(カラーバーは非表示)
sns.heatmap(df1, cmap="plasma", ax=ax1, cbar=False)
sns.heatmap(df2, cmap="hot", ax=ax2, cbar=False)

# 右側のグラフの目盛りを右軸側に移動
ax2.yaxis.tick_right()

fig.subplots_adjust(wspace=0.001)
plt.show()

コードのポイント解説

  • カラーマップの使い分け: 左側のヒートマップにはplasma、右側にはhotを使用することで、2つのデータセットを視覚的に区別しやすくなっています。

  • cbar=False: カラーバーを非表示にすることで、2つのヒートマップを隙間なく並べられます。必要に応じてTrueに変更してください。

  • wspaceの調整: subplots_adjust(wspace=...)でサブプロット間の間隔を制御しています。値を小さくするほど、2つのヒートマップが一体化して見えます。

  • yaxis.tick_right(): 右側のグラフのY軸ラベルを外側(右側)に移動させることで、左のグラフとの重なりを防ぎます。

実行結果

上記のコードを実行すると、以下のように2つのヒートマップが横並びで表示されます。

Seabornで2つのヒートマップを1つの図に組み合わせる方法

この手法は、同じ行数・列数を持つ複数のデータセットを比較したい場合や、ダッシュボード風のレイアウトを作成したい場合に特に便利です。ぜひ自分のデータに合わせてカラーマップやレイアウトをカスタマイズしてみてください。

  1. SeabornでX軸の目盛り(x-ticks)の表示密度を減らす方法

    SeabornでX軸の目盛り(x-ticks)の表示密度を減らしたい場合、奇数番目の位置にあるラベルに対して set_visible(False) を設定する方法が有効です。この記事では、具体的な手順とサンプルコードをわかりやすく解説します。 手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 X軸とY軸のキーを持つデータフレームを作成します。 barplot() メソッドを使用して、棒グラフで点推定値と信頼区間を表示します。 bar_plot.get_xticklabels() メソッドを反復処理し、index が偶数の場合はラベルを表示、奇数の場合は非表

  2. Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)

    データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a