ヒートマップとは?
ヒートマップはデータのマトリックスを色の濃淡で表現する強力な視覚化ツールで、特に遺伝子発現データのような大量の情報を扱う場合に有用です。
ここでは、Pythonのseaborn
ライブラリを使用してヒートマップを描く簡単な例を紹介します。
ヒートマップのサンプル
seaborn
とmatplotlib
を使用します。
pip install seaborn matplotlib
ランダムなデータを使用してヒートマップを作成するサンプルコードです。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# ランダムデータ生成
np.random.seed(0) # 再現性のため
data = np.random.rand(10, 12) # 10遺伝子 x 12サンプルとして
# 遺伝子名&サンプル名のリスト
gene_labels = [f'Gene{i+1}' for i in range(data.shape[0])] # Y軸ラベル
sample_labels = [f'Sample{i+1}' for i in range(data.shape[1])] # X軸ラベル
# ヒートマップ作成
plt.figure(figsize=(12, 10)) # プロットのサイズ設定
sns.heatmap(data, annot=True, cmap='coolwarm', linewidths=.5,
xticklabels=sample_labels, yticklabels=gene_labels)
# タイトル&ラベルの追加(X軸とY軸のラベルを回転)
plt.title('Gene Expression Heatmap')
plt.xticks(rotation=45, ha='right')
plt.yticks(rotation=0)
# PDFファイルの保存
plt.savefig('heatmap_labeled.pdf', format='pdf')
# プロットの表示
plt.show()

クラスタリングする場合は、clustermap関数を使います。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# ランダムデータ生成
np.random.seed(0) # 再現性のため
data = np.random.rand(10, 12) # 10遺伝子 x 12サンプルとして
# 遺伝子名&サンプル名のリスト
gene_labels = [f'Gene{i+1}' for i in range(data.shape[0])] # Y軸ラベル
sample_labels = [f'Sample{i+1}' for i in range(data.shape[1])] # X軸ラベル
# クラスタマップ作成
sns.clustermap(data, figsize=(12, 10), annot=True, cmap='coolwarm',
linewidths=.5, row_cluster=True, col_cluster=True,
xticklabels=sample_labels, yticklabels=gene_labels)
# ラベルの追加(X軸とY軸のラベルを回転)
plt.setp(plt.gca().get_xticklabels(), rotation=45, ha='right')
plt.setp(plt.gca().get_yticklabels(), rotation=0)
# タイトルはclustermapには直接適用できないため、省略
# PDFファイルの保存
plt.savefig('clustermap_labeled.pdf', format='pdf', bbox_inches='tight')
# プロットを表示
plt.show()

サンプルプログラムの簡単な説明
- ライブラリのインポート
seaborn
,matplotlib.pyplot
,numpy
- ランダムデータの生成
- 10行(遺伝子)と12列(サンプル)のデータマトリックス作成。
- ラベルの生成
- 遺伝子名&サンプル名(
sample_labels
)。ヒートマップの各行と列に対応。
- 遺伝子名&サンプル名(
- ヒートマップの作成
seaborn
のheatmap
(またはclustermap)関数を使用してヒートマップを描画。data
にヒートマップに表示したいデータを指定し、annot=True
で各セルに数値を表示。cmap='coolwarm'
で色のパレットを指定、xticklabels
とyticklabels
にはラベルのリストを指定。
- ラベルの回転
- X軸とY軸のラベルの回転角度を調整(ラベルが重ならないように)
- タイトルの追加
- PDFとして保存
- プロットの表示