バイオインフォマティクスでは、遺伝子発現データ、SNPデータ、RNA-Seqデータ、タンパク質相互作用データなど、大量のデータを解析する場面が多くあります。その際、データの傾向や異常値を素早く把握するために 「データの可視化」 が非常に重要になります。
Pythonの pandas ライブラリを使えば、データの前処理だけでなく、シンプルな可視化も簡単に行えます。さらに、matplotlib
や seaborn
などのライブラリと組み合わせることで、より高度な可視化も可能になります。
本記事では、pandasを使った基本的なデータの可視化方法 から、バイオインフォマティクス向けの応用例 まで詳しく解説していきます。
1. pandasによる基本的なデータの可視化
pandasは、内部で matplotlib を利用しているため、簡単な可視化であればpandasのメソッドだけで十分対応できます。
1.1 基本的な折れ線グラフ(line plot)
まず、遺伝子発現データを例に、基本的な折れ線グラフを作成してみましょう。
import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータ(遺伝子発現データ)
data = {
"Gene": ["BRCA1", "TP53", "EGFR", "MYC"],
"Sample1": [2.5, 8.1, 5.3, 6.2],
"Sample2": [1.2, 7.9, 4.8, 5.6],
"Sample3": [3.1, 8.5, 6.1, 7.0]
}
df = pd.DataFrame(data).set_index("Gene")
# 折れ線グラフの描画
df.T.plot(kind="line", marker="o", figsize=(8, 5))
plt.title("Gene Expression Levels")
plt.xlabel("Samples")
plt.ylabel("Expression Level")
plt.legend(title="Gene")
plt.show()

解説
.T
を使い、行と列を入れ替えて可視化しやすくしている。kind="line"
で折れ線グラフを作成。marker="o"
で各点にマーカーを追加し、視認性を向上。
このように、pandasの plot()
メソッドを使うだけで、シンプルな可視化が可能です。
1.2 ヒストグラム(histogram)
ヒストグラムは、データの分布を見るのに適しています。例えば、ある遺伝子の発現レベルの分布を確認するには以下のようにします。
df.T.plot(kind="hist", alpha=0.7, bins=5, figsize=(8, 5))
plt.title("Gene Expression Distribution")
plt.xlabel("Expression Level")
plt.ylabel("Frequency")
plt.legend(title="Gene")
plt.show()

解説
kind="hist"
でヒストグラムを描画。alpha=0.7
で透明度を調整し、データが重なっても見やすくする。bins=5
でデータを5つの範囲に分割。
このヒストグラムを見れば、遺伝子の発現レベルがどのような分布をしているのか簡単に把握できます。
1.3 箱ひげ図(box plot)
箱ひげ図を使えば、データのばらつきや外れ値を視覚的に確認できます。
df.plot(kind="box", figsize=(8, 5))
plt.title("Gene Expression Variability")
plt.ylabel("Expression Level")
plt.show()

解説
kind="box"
で箱ひげ図を描画。- 遺伝子ごとの発現データのばらつきが一目でわかる。
これはRNA-SeqデータのQC(品質管理)などでもよく使われます。
2. 応用:バイオインフォマティクス向けデータ可視化
2.1 クラスタリングの可視化(ヒートマップ)
遺伝子発現データをクラスタリングする際には、 ヒートマップ を使うと視覚的に分かりやすくなります。
import seaborn as sns
plt.figure(figsize=(8, 6))
sns.heatmap(df, annot=True, cmap="coolwarm")
plt.title("Gene Expression Heatmap")
plt.show()

解説
seaborn.heatmap()
を使うことで、遺伝子発現データのパターンを視覚的に把握できる。annot=True
で数値を表示。cmap="coolwarm"
で発現量が低いものは青、高いものは赤にする。
このようなヒートマップは 遺伝子の共発現解析や細胞系譜の解析 でよく使用されます。
2.2 PCA(主成分分析)の可視化
RNA-Seqデータやマイクロアレイデータの次元削減には PCA(主成分分析) がよく使われます。
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca_result = pca.fit_transform(df.T)
df_pca = pd.DataFrame(pca_result, columns=["PC1", "PC2"], index=df.columns)
plt.figure(figsize=(8, 6))
sns.scatterplot(x="PC1", y="PC2", data=df_pca)
plt.title("PCA of Gene Expression Data")
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.show()

解説
PCA(n_components=2)
で2次元に圧縮。scatterplot
を使い、PC1とPC2の分布を可視化。- クラスタリングやサンプル間の関係性を視覚的に確認できる。
PCAを使うことで、大量の遺伝子発現データを少ない次元で表現し、サンプル間の差を明確に できます。
3. まとめ
バイオインフォマティクスにおいて、データの可視化は データの傾向を直感的に把握するための強力なツール です。
- 基本的な可視化
- 折れ線グラフ(遺伝子発現の変化)
- ヒストグラム(発現レベルの分布)
- 箱ひげ図(ばらつきと外れ値)
- 応用的な可視化
- ヒートマップ(クラスタリング)
- PCA(次元削減)
pandasの plot()
を使えば、基本的な可視化は簡単に行えます。さらに seaborn
や matplotlib
を組み合わせることで、より詳細な解析が可能になります!!
バイオインフォマティクスの解析で、データの可視化を活用し、直感的かつ効率的なデータ解析 を目指しましょう〜!