Menu

MultivariateLive Code Editor
105 researchers ran this analysis this month

Correlation Analysis Heatmap in Python

Technique overview

Visualize relationships between variables with annotated Pearson or Spearman correlation heatmaps.

Correlation heatmaps summarize pairwise relationships across variables in a compact matrix. They are useful for screening clinical covariates, omics features, sensor channels, materials descriptors, and model inputs. The interpretation depends on the correlation method: Pearson captures linear relationships, while Spearman captures monotonic rank relationships and is more robust to outliers. A publication-ready heatmap should use consistent ordering, readable labels, and masking to reduce duplicate information.

Key points

  • Visualize relationships between variables with annotated Pearson or Spearman correlation heatmaps.
  • Correlation heatmaps summarize pairwise relationships across variables in a compact matrix.
  • They are useful for screening clinical covariates, omics features, sensor channels, materials descriptors, and model inputs.
  • The interpretation depends on the correlation method: Pearson captures linear relationships, while Spearman captures monotonic rank relationships and is more robust to outliers.
numpypandasmatplotlibseaborn

Example Visualization

Review the example first, then use the live editor below to run and customize the full workflow.

Mathematical Foundation

Correlation heatmaps summarize pairwise relationships across variables in a compact matrix.

r = covariance(x, y) / (std(x) * std(y))

Equation

r = covariance(x, y) / (std(x) * std(y))

Parameter breakdown

Pearson rLinear correlation coefficient
Spearman rhoPearson correlation of ranked values
p-valueEvidence against zero correlation for a pair
maskUpper or lower triangle hidden to avoid duplication

When to use this technique

Use correlation heatmaps when you need to inspect relationships among many numeric variables before modeling or interpretation.

Apply This Technique Now

Run this analysis workflow with AI in seconds. Use the prepared technique prompt or bring your own dataset.

View example prompt
Example AI Prompt

"Compute a correlation matrix for my dataset, plot an annotated heatmap with hierarchical ordering, and highlight the strongest relationships"

How to apply this technique in 30 seconds

1

Upload Data

Upload your CSV or Excel file in Analyze and keep your column names as-is.

2

Generate

Run the example prompt and let AI generate this technique automatically.

3

Refine and Export

Adjust code or prompt, then export publication-ready figures.

Implementation Code

The core data processing logic. Copy this block and replace the sample data with your measurements.

import numpy as np
import pandas as pd
from scipy import stats

np.random.seed(9)
n = 80
df = pd.DataFrame({
    "temperature": np.random.normal(25, 4, n),
    "pressure": np.random.normal(100, 8, n),
})
df["yield"] = 0.55 * df["temperature"] - 0.25 * df["pressure"] + np.random.normal(10, 3, n)
df["purity"] = 0.6 * df["yield"] + np.random.normal(0, 4, n)
df["viscosity"] = -0.5 * df["temperature"] + np.random.normal(20, 2, n)

corr = df.corr(method="spearman")
pvals = pd.DataFrame(np.ones_like(corr), index=corr.index, columns=corr.columns)
for i in corr.columns:
    for j in corr.columns:
        _, pvals.loc[i, j] = stats.spearmanr(df[i], df[j])

print(corr.round(2))

Visualization Code

Complete matplotlib code for a publication-ready figure. Copy, paste into your notebook, and adjust labels to match your data.

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

np.random.seed(9)
n = 80
temperature = np.random.normal(25, 4, n)
pressure = np.random.normal(100, 8, n)
df = pd.DataFrame({
    "temperature": temperature,
    "pressure": pressure,
    "yield": 0.55 * temperature - 0.25 * pressure + np.random.normal(10, 3, n),
    "purity": 0.6 * (0.55 * temperature - 0.25 * pressure) + np.random.normal(0, 4, n),
    "viscosity": -0.5 * temperature + np.random.normal(20, 2, n),
})
corr = df.corr(method="spearman")
mask = np.triu(np.ones_like(corr, dtype=bool))

fig, ax = plt.subplots(figsize=(6.5, 5.5))
sns.heatmap(corr, mask=mask, cmap="vlag", vmin=-1, vmax=1, center=0,
            annot=True, fmt=".2f", square=True, linewidths=0.5,
            cbar_kws={"label": "Spearman correlation"}, ax=ax)
ax.set_title("Correlation Analysis Heatmap")
plt.tight_layout()
plt.savefig("correlation_analysis_heatmap.png", dpi=300, bbox_inches="tight")
plt.show()

Cluster the Correlation Matrix

Hierarchical ordering groups related variables together and makes block structure easier to see.

distance = 1 - np.abs(corr)
sns.clustermap(corr, cmap="vlag", vmin=-1, vmax=1, center=0,
               row_linkage=None, col_linkage=None, annot=True, fmt=".2f")

Common Errors and How to Fix Them

Correlation is interpreted as causation

Why: Correlation does not establish direction, mechanism, or independence from confounders.

Fix: Use correlations as exploratory evidence and follow with experimental design or adjusted modeling.

Outliers dominate Pearson correlations

Why: Pearson correlation is sensitive to extreme values.

Fix: Inspect scatter plots and consider Spearman correlation for skewed or outlier-prone data.

Too many variables make the heatmap unreadable

Why: Dense labels and annotations overload the figure.

Fix: Filter to relevant variables, cluster features, or split by domain.

Frequently Asked Questions

Apply Correlation Analysis Heatmap in Python to Your Data

Upload your dataset and Plotivy generates the Python code, runs the analysis, and produces a publication-ready figure.

Generate Code for This Technique

Python Libraries

numpypandasmatplotlibseaborn

Quick Info

Domain
Multivariate
Typical Audience
Researchers and analysts summarizing relationships across experimental features, omics variables, or clinical covariates

Related Chart Guides

Apply to your data

Upload a dataset and get Python code instantly

Get Started Free