Clustermap

RNA-Seq Expression Matrix

Gene expression levels across tissue samples with hierarchical clustering

Output
RNA-Seq Expression Matrix
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

np.random.seed(42)

genes = [f'Gene_{i}' for i in range(1, 21)]
tissues = ['Brain', 'Heart', 'Liver', 'Kidney', 'Lung', 'Muscle', 'Skin', 'Blood']

# Expression data with tissue-specific patterns
data = np.random.randn(20, 8) * 2
data[:5, 0] += 4  # Brain-specific genes
data[5:10, 1:3] += 3  # Heart/Liver genes
data[10:15, 3:5] += 3  # Kidney/Lung genes
data[15:, 5:] += 2  # Other tissues

df = pd.DataFrame(data, index=genes, columns=tissues)

# Tissue type colors
tissue_type = ['Neural', 'Cardiac', 'Metabolic', 'Excretory', 'Respiratory', 'Muscular', 'Epithelial', 'Immune']
palette = {'Neural': '#4927F5', 'Cardiac': '#F5276C', 'Metabolic': '#F5B027', 'Excretory': '#27D3F5',
           'Respiratory': '#6CF527', 'Muscular': '#F54927', 'Epithelial': '#D3F527', 'Immune': '#F527B0'}
col_colors = pd.Series(tissue_type, index=tissues).map(palette)

neon_cmap = LinearSegmentedColormap.from_list('neon', ['#4927F5', '#0a0a0f', '#F5B027', '#F5276C'])

g = sns.clustermap(df, cmap=neon_cmap, col_colors=col_colors,
                   method='ward', metric='euclidean',
                   linewidths=0.3, linecolor='#1a1a2e',
                   figsize=(9, 8), dendrogram_ratio=(0.12, 0.12),
                   cbar_pos=(0.01, 0.08, 0.008, 0.12),
                   tree_kws={'linewidths': 1.5, 'colors': '#27D3F5'})

g.fig.patch.set_facecolor('#0a0a0f')
g.ax_heatmap.set_facecolor('#0a0a0f')
g.ax_heatmap.tick_params(colors='white', labelsize=8)
g.ax_row_dendrogram.set_facecolor('#0a0a0f')
g.ax_col_dendrogram.set_facecolor('#0a0a0f')
g.cax.tick_params(colors='white', labelsize=7)

g.fig.suptitle('RNA-Seq Tissue Expression', color='white', fontsize=13, fontweight='bold', y=1.02)
plt.show()
Library

Matplotlib

Category

Heatmaps & Density

Did this help you?

Support PyLucid to keep it free & growing

Support