Menu

FOR RESEARCHERS & SCIENTISTS

Scientific Data Visualization
for Reproducible Research

Generate publication-ready figures backed by transparent, exportable Python code. From raw CSV to journal-quality figure in under a minute.

Why Scientific Figures Need Code

Most scientific figures are created in point-and-click tools that produce beautiful but unreproducible outputs. When a reviewer asks to change the axis range or add error bars, you must redo the entire figure from scratch. Plotivy solves this by generating every figure from transparent Python code you can re-run, share, and version-control.

Code = Recipe

Every figure comes with full Python source (Matplotlib or Plotly). Re-run it locally, modify parameters, or include it in your supplementary materials.

FAIR Compliant

Your data and code are Findable, Accessible, Interoperable, and Reusable. Essential for modern grant compliance and open-science mandates.

Teaching Tool

Students learn plotting by seeing AI-generated code for their data. Bridges the gap between theory and implementation.

Multi-Panel Publication Figure

A complete 4-panel figure combining scatter + fit, bar chart with significance brackets, time series, and residual histogram - the kind of composite figure commonly required by journals.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Customization tips

  • Change GridSpec(2, 2) to GridSpec(1, 4) for a landscape layout
  • Adjust figsize to match your journal column width (e.g., 3.5 in for single-column)
  • Replace data arrays with your own experimental results

From Raw Data to Published Figure

1

Upload Data

Drag and drop CSV, Excel, or JSON files. Or paste data directly.

2

Describe in English

"Plot column A vs B with error bars. Use Nature style."

3

Export & Cite

Download SVG/PDF for the journal and copy the Python code for the appendix.

UV-Vis Spectral Decomposition

A two-panel figure showing a simulated protein UV-Vis absorption spectrum decomposed into individual Gaussian bands (peptide bond, aromatic residues, Soret band, Q-band) with residual analysis below.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Built for the Scientific Workflow

Journal Style Presets

Nature, Science, ACS, IEEE - apply pre-configured styles with one click for instant compliance.

Matplotlib + Plotly

Choose static Matplotlib figures for print or interactive Plotly charts for presentations and posters.

Statistical Overlays

Error bars, confidence bands, significance brackets, and regression fits generated automatically.

Version Control Friendly

Python scripts are plain text - commit them alongside your data in Git for full reproducibility.

Chart gallery

Explore the Full Chart Gallery

Interactive examples with ready-to-run Python code

Browse all chart types →
Bar chart comparing average scores across 5 groups with error bars
Comparison•matplotlib, seaborn
From the chart gallery•Comparing performance across categories

Bar Chart

Compares categorical data using rectangular bars with heights proportional to values.

Sample code / prompt

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

# Generate performance scores for 5 treatment groups
np.random.seed(42)
groups = ['Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Treatment D']
n_samples = 30
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],
Histogram showing age distribution with 20 bins and KDE overlay
Distribution•matplotlib, seaborn
From the chart gallery•Analyzing age demographics

Histogram

Displays the distribution of numerical data by grouping values into bins.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde, skewnorm

# Generate age data with slight right skew
np.random.seed(42)
ages = skewnorm.rvs(a=2, loc=42, scale=15, size=500)
ages = np.clip(ages, 18, 80)  # Clip to realistic range

fig, ax = plt.subplots(figsize=(12, 7))

Start Creating Reproducible Figures

Upload your data, describe the figure you need, and get publication-ready output with full Python code in under a minute.

Start Free - No Sign-Up