ヒートマップの作図【python】

スポンサーリンク

ヒートマップとは?

ヒートマップはデータのマトリックスを色の濃淡で表現する強力な視覚化ツールで、特に遺伝子発現データのような大量の情報を扱う場合に有用です。

ここでは、Pythonのseabornライブラリを使用してヒートマップを描く簡単な例を紹介します。

ヒートマップのサンプル

seabornmatplotlibを使用します。

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()

サンプルプログラムの簡単な説明

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