Matplotlib, Seaborn, and Plotly — unified behind one clean API and a 14-page point-and-click Streamlit GUI. From raw files to publication figures in minutes.
From raw data upload to publication figures — without switching tools or writing boilerplate.
Scatter, line, bar, histogram, box, violin, heatmap, contour, 3D surface, regression, and more — in Matplotlib, Seaborn, or interactive Plotly. Annotation overlays included.
Data upload, quick plotting, analysis tools, multi-plot dashboards, spectroscopy, molecular visualization, batch analysis, and export — all point-and-click, no code required.
CSV, Excel, TSV, JSON, Parquet, NumPy, Pickle, JCAMP-DX, HDF5, NetCDF,
SPC, ASC, mzML/mzXML, and more. Auto-detected from file extension via a
single load_data() call.
25+ math functions covering statistics, curve fitting (Gaussian, Lorentzian, Voigt), signal processing (FFT, smoothing, baseline), peak finding, and hypothesis testing.
Dedicated tools for IR/Raman, NMR, UV-Vis, and mass spectrometry. Built-in NIST WebBook integration fetches reference spectra by CAS number. 3D molecular visualization from Gaussian/ORCA output files.
Drop a plugin_*.py
file into plugins/
to add custom plot types or analysis tools. Discovered and loaded
automatically at startup.
Static, statistical, and interactive — pick the library that fits your workflow.
Matplotlib → static/print · Seaborn → statistical · Plotly → interactive/web
One function reads them all. Format is detected from the file extension automatically.
Clone the repository and run with the provided setup scripts — no terminal experience required.
git clone https://github.com/The-Schultz-Lab/plottle.git
cd plottle
# Windows — double-click setup.bat, then launch.bat
# macOS — double-click setup.command, then launch.command
# Or from the terminal:
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
streamlit run modules/Home.py
Use Plottle from scripts or Jupyter notebooks for reproducible, programmatic analysis.
from plottle.io import load_data
from plottle.plotting import line_plot, save_figure
import numpy as np
# Simulate a UV-Vis absorption spectrum
wavelength = np.linspace(400, 800, 200)
absorbance = 0.8 * np.exp(-((wavelength - 520) ** 2) / (2 * 30 ** 2))
# Plot — returns (fig, ax, info) for Matplotlib plots
fig, ax, info = line_plot(
wavelength, [absorbance],
xlabel='Wavelength (nm)',
ylabel='Absorbance',
title='UV-Vis Spectrum',
labels=['Sample A'],
)
save_figure(fig, 'spectrum.png', dpi=300)
# Load any of the 18 supported formats automatically
df = load_data('experiment.jdx') # JCAMP-DX
df = load_data('data.hdf5') # HDF5
df = load_data('results.csv') # CSV
| Module | What it provides |
|---|---|
plottle.io |
load_data() / save_data() — auto-detects format from extension |
plottle.plotting |
26 plot functions; Matplotlib returns (fig, ax, info), Plotly returns (fig, info) |
plottle.math |
25 functions — statistics, curve fitting, hypothesis tests, optimization, linear algebra |
plottle.signal |
16 functions — smoothing, filtering, FFT, derivatives, baseline correction, interpolation |
plottle.peaks |
Find, integrate, FWHM, fit (Gaussian / Lorentzian / Voigt / pseudo-Voigt) |
plottle.spectroscopy |
18 functions — IR/Raman, UV-Vis, NMR, mass spectrometry |
plottle.nist |
NIST WebBook integration — fetch IR spectra by CAS number |
plottle.data_tools |
12 non-destructive DataFrame operations (normalize, pivot, merge, resample, …) |
plottle.annotations |
7 overlay types — hline, vline, span, text, rectangle, ellipse |
plottle.report |
PDF report generation via matplotlib.PdfPages |
A full exploratory data analysis environment in the browser — no coding required.
| # | Page | What you can do |
|---|---|---|
| Home | Dashboard | Overview, help tabs, recent sessions |
| 1 | Data Upload | 18 formats, shape/type preview, batch folder import |
| 2 | Quick Plot | 26 plot types, live style controls, annotation panel, Plotly toggle |
| 3 | Analysis Tools | 8 tabs: Statistics, Distribution, Curve Fit, Optimization, Linear Algebra, Signal, Peaks, Hypothesis Tests |
| 4 | Multi-Plot Dashboard | Up to 4×4 grid, axis sharing, combined PNG/PDF export |
| 5 | Advanced Plotting | Seaborn statistical plots and Plotly interactive charts with HTML export |
| 7 | Export Results | Plots, data, and analyses; save/load full sessions; PDF reports |
| 8 | Gallery | Pre-generated figure gallery with Load this config buttons |
| 9 | Data Tools | 10 tabs: formula columns, normalize, transpose, pivot/melt, filter, merge, resample, rolling… |
| 10 | Spectroscopy | IR/Raman, NMR, UV-Vis, MS tools; NIST WebBook lookup by CAS number |
| 11 | Molecular Viz | Gaussian/ORCA/Molden output files; 3D structure and vibrational mode display |
| 12 | Batch Analysis | Batch statistics, curve fitting, and peak analysis with workflow presets |
| 13 | Help | Getting Started, Plot Types, Analysis Tools, Formats, Tips |
| 14 | Settings | Theme, DPI, plot defaults, named preset CRUD, plugin status |
Five subcommands for batch processing and scripted workflows.
# Generate a scatter plot from any supported file format
plottle plot data.csv --plot scatter --x-column x --y-column y
# Descriptive statistics summary
plottle stats data.csv
# Batch processing from a JSON config
plottle batch config.json --verbose
# Side-by-side comparison of two datasets
plottle compare before.csv after.csv --plot line --output comparison.png
# Convert between supported formats
plottle convert spectrum.jdx spectrum.csv