Menu

GWAS and Genome-Wide Association Studies

Manhattan Plot Generator for GWAS and Genome-Wide Association Results

A Manhattan plot is the standard way to display association results across the whole genome at once. Plotivy turns per-variant p-values into a publication-ready Python figure with alternating chromosome colors, the genome-wide significance line, and clean -log10(p) scaling.

When a Manhattan Plot Is the Right Choice

Use a Manhattan plot when you have a p-value for many variants spread across the genome and want to spot the loci that rise above the significance threshold. Laying chromosomes end to end on the x-axis and plotting -log10(p) on the y-axis makes the strongest signals tower over the background noise.

GWAS results

Show association strength for millions of variants in one genome-wide view.

Significance line

Mark the genome-wide threshold so reviewers see which loci pass.

Locus discovery

Peaks cluster at associated regions, making candidate loci easy to spot.

Cross-study layout

Alternating chromosome colors keep dense scatter readable in print.

What Plotivy Adds to the Workflow

Honest -log10(p) scaling

Tiny p-values become tall peaks while the bulk of variants stays near the baseline.

Readable chromosome bands

Alternating colors and centered chromosome ticks keep millions of points legible.

Clear significance threshold

The 5e-8 reference line separates genome-wide hits from suggestive signals.

Reproducible Python output

Every figure is editable code, so collaborators can trace thresholds and color choices.

Live Code Lab: Manhattan Plot

This example simulates association p-values across 22 chromosomes, plants a few genome-wide significant hits, and plots -log10(p) with alternating chromosome colors and the 5e-8 significance line. Swap in your own summary statistics to visualize a real scan.

Chart gallery

Related Chart Types

Other chart templates for genomics and high-dimensional association results

Browse all chart types →
Manhattan plot showing GWAS results with SNP p-values plotted across chromosomes 1 to 22, with red genome-wide significance line
Statistical•matplotlib, numpy
From the chart gallery•Identifying genetic loci associated with complex traits such as height, BMI, or disease risk

Manhattan Plot

Genome-wide scatter plot displaying -log10 p-values of SNP associations across chromosomes, with horizontal significance threshold lines.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
chroms = list(range(1, 23))
positions = []
pvalues = []
chrom_labels = []
for chrom in chroms:
    n_snps = np.random.randint(200, 500)
Volcano plot showing differentially expressed genes with upregulated genes in red and downregulated in blue
Statistical•matplotlib, numpy
From the chart gallery•RNA-seq differential expression analysis (DESeq2, edgeR output visualization)

Volcano Plot

Scatter plot combining statistical significance (-log10 p-value) with effect magnitude (log2 fold-change) to identify differentially expressed genes or proteins.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
n_genes = 5000
log2fc = np.random.normal(0, 1.5, n_genes)
pvalues = 10 ** (-np.abs(log2fc) * np.random.uniform(0.5, 3, n_genes))
neg_log10p = -np.log10(pvalues)

fc_thresh = 1.0
Q-Q plot showing data points versus theoretical quantiles with reference line
Statistical•scipy, matplotlib
From the chart gallery•Testing for normality

Q-Q Plot

Compares two probability distributions by plotting their quantiles against each other.

Sample code / prompt

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# Generate synthetic data (t-distribution with heavy tails)
np.random.seed(42)
data = np.random.standard_t(df=5, size=100)

# Create Q-Q plot
fig, ax = plt.subplots(figsize=(8, 6))
Scatter plot of height vs weight colored by gender with regression line
Statistical•matplotlib, seaborn
From the chart gallery•Correlation analysis between metrics

Scatterplot

Displays values for two variables as points on a Cartesian coordinate system.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import pandas as pd

# Generate sample data
np.random.seed(42)
n_samples = 200
height = np.random.normal(170, 8, n_samples)
weight = height * 0.6 + np.random.normal(0, 8, n_samples) - 50
Correlation heatmap with diverging color scale and coefficient annotations
Statistical•seaborn, matplotlib
From the chart gallery•Correlation analysis between variables

Heatmap

Represents data values as colors in a two-dimensional matrix format.

Sample code / prompt

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

# Create correlation matrix for financial metrics
metrics = ['Revenue', 'Profit', 'Expenses', 'ROI', 'Customers', 'AOV', 'Marketing', 'Employees']
correlation_data = np.array([
    [1.00, 0.85, -0.45, 0.72, 0.88, 0.65, 0.72, 0.55],
    [0.85, 1.00, -0.78, 0.92, 0.75, 0.58, 0.63, 0.48],

Turn Summary Statistics into a Genome-Wide Figure

Build a Manhattan plot from your own per-variant p-values, mark the significance threshold, and export a figure that is ready for a paper or supplementary file.