EaglePlot
A general-purpose Python toolkit for scientific data visualization and analysis, developed for research and teaching in computational science at North Carolina Central University.
EaglePlot was called Plottle until version 3.0. If you used Plottle, change
import plottle/from plottle.… import …toeagleplot, and run theeagleplotcommand instead ofplottle. Session files saved by Plottle still load.
Overview
EaglePlot provides a unified interface for scientific data work:
- Data I/O — 18 file formats (CSV, Excel, TSV, JSON, Parquet, NumPy, Pickle, JCAMP-DX, HDF5, NetCDF, SPC, ASC, mzML/mzXML, and more)
- Mathematical analysis — statistics, curve fitting, signal processing, peak analysis, hypothesis testing, optimization, linear algebra
- Multi-library plotting — 27 plot types across Matplotlib (static), Seaborn (statistical), and Plotly (interactive)
- 14-page Streamlit GUI — exploratory data analysis without writing code
- CLI — batch processing and scripted workflows
- Plugin system — drop
plugin_*.pyintoplugins/for custom plot types and tools
Quick Start
Clone the repository
1 — Clone and enter the repository
git clone https://github.com/The-Schultz-Lab/eagleplot.git
cd eagleplot
2 — Set up and launch (double-click, no terminal needed)
Windows:
- Double-click
setup.bat— creates the virtual environment and installs all dependencies. - Double-click
launch.bat— starts EaglePlot. Use this every time you want to open the app.
macOS:
- Double-click
setup.command— creates the virtual environment and installs all dependencies. (If macOS asks "Are you sure you want to open it?", click Open.) - Double-click
launch.command— starts EaglePlot. Use this every time you want to open the app.
Linux:
- Run
./setup.shin a terminal — creates the virtual environment and installs all dependencies. (On Debian/Ubuntu you may first needsudo apt install python3-venv.) - Run
./launch.sh— starts EaglePlot.
After the app starts, open http://localhost:8501 in your browser (Streamlit usually opens it automatically).
2 (alternative) — Set up and launch from the terminal
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
# Install EaglePlot and its dependencies. The editable install is what puts the
# `eagleplot` command on your PATH.
pip install -e ".[formats,nist]"
streamlit run eagleplot/Home.py
3 — Or use the CLI
eagleplot --help
eagleplot plot data.csv --plot scatter --x-column x --y-column y
eagleplot stats data.csv
The eagleplot command comes from the pip install above. From a source checkout
without installing, use python -m eagleplot.cli instead.
GUI Pages
| Page | Description |
|---|---|
| Home | Dashboard overview and help tabs |
| 1 — Data Upload | Upload files in 18 formats; preview shape, column types, and summary statistics; batch folder import |
| 2 — Quick Plot | 27 plot types with live style controls, annotation panel, and Convert to Plotly toggle |
| 3 — Analysis Tools | 8 tabs: Statistics, Distribution, Curve Fit, Optimization, Linear Algebra, Signal Processing, Peak Analysis, Statistical Tests |
| 4 — Multi-Plot Dashboard | Up to 4×4 grid layouts with axis sharing and combined PNG/PDF export |
| 5 — Advanced Plotting | Seaborn statistical plots and Plotly interactive charts with HTML export |
| 7 — Export Results | Export plots, data, and analyses; save/load full sessions; generate PDF reports |
| 8 — Gallery | Pre-generated figure gallery with Load this config buttons |
| 9 — Data Tools | 10 operation tabs: formula columns, normalization, transpose, pivot/melt, filter, sort, merge, fill/drop NaN, resample, rolling transforms |
| 10 — Spectroscopy | IR/Raman, NMR, UV-Vis, Mass Spec tools; NIST WebBook spectral lookup by CAS number |
| 11 — Molecular Viz | Upload Gaussian/ORCA/Molden output files; 3D molecular 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, Supported Formats, Tips |
| 14 — Settings | Theme, DPI, plot defaults, named preset CRUD, plugin status |
Supported File Formats (18)
| Category | Formats |
|---|---|
| Tabular | .csv, .tsv, .xlsx, .xls, .json, .parquet |
| Array | .npy, .npz, .pkl |
| Instrument / Spectral | .jdx / .dx (JCAMP-DX), .h5 / .hdf5 (HDF5), .nc / .cdf (NetCDF), .spc (Thermo Fisher), .asc (generic text), .mzml / .mzxml (mass spectrometry, optional) |
CLI
EaglePlot includes a command-line interface with 5 subcommands:
eagleplot plot <file> --plot <type> --x-column X --y-column Y [--output out.png]
eagleplot stats <file>
eagleplot batch <config.json> [--verbose]
eagleplot compare <file1> <file2> --plot line [--output comparison.png]
eagleplot convert <input> <output>
See the CLI Tutorial for full usage and examples.
Python API
EaglePlot's modules can be used directly in scripts or Jupyter notebooks:
from eagleplot.io import load_data
from eagleplot.plotting import line_plot, save_figure
import numpy as np
wavelength = np.linspace(400, 800, 200)
absorbance = 0.8 * np.exp(-((wavelength - 520) ** 2) / (2 * 30**2))
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)
Key modules
| Module | Description |
|---|---|
eagleplot.io |
load_data() / save_data() — auto-detects format from extension |
eagleplot.math |
25 functions — statistics, curve fitting, hypothesis tests, optimization, linear algebra |
eagleplot.plotting |
27 plot types; Matplotlib → (fig, ax, info), Plotly → (fig, info) |
eagleplot.signal |
16 functions — smoothing, filtering, FFT, derivatives, baseline correction, interpolation |
eagleplot.peaks |
5 functions — find, integrate, FWHM, fit (Gaussian/Lorentzian/Voigt/pseudo-Voigt) |
eagleplot.data_tools |
12 non-destructive DataFrame operations |
eagleplot.spectroscopy |
18 functions — IR/Raman, UV-Vis, NMR, MS |
eagleplot.nist |
NIST WebBook integration — fetch IR spectra by CAS number |
eagleplot.batch |
Batch load, statistics, curve fit, peak analysis |
eagleplot.annotations |
7 overlay types (hline, vline, hspan, vspan, text, rectangle, ellipse) |
eagleplot.report |
PDF report generation via matplotlib.PdfPages |
eagleplot.molecular |
CPK atom data, Gaussian/ORCA/Molden parsers, Plotly 3D molecule builder |
Plugin System
Drop a plugin_*.py file into plugins/ to add custom plot types or analysis tools.
See plugins/plugin_example.py for the starter template.
Dependencies
| Package | Purpose |
|---|---|
numpy |
Numerical computing |
scipy |
Scientific algorithms, curve fitting, signal processing |
pandas |
Tabular data |
matplotlib |
Static plotting |
seaborn |
Statistical visualizations |
plotly |
Interactive plots |
streamlit |
GUI framework |
openpyxl |
Excel file support |
requests |
NIST WebBook HTTP integration |
h5py |
HDF5 file support |
xarray / netcdf4 |
NetCDF file support |
Optional:
| Package | Purpose |
|---|---|
statsmodels |
Two-way ANOVA (anova_twoway in eagleplot.math) |
pymzml |
mzML/mzXML mass spectrometry files |
jcamp |
Alternative JCAMP-DX parser |
See requirements.txt for pinned version ranges.
Project Structure
eagleplot/ ← repository root
├── eagleplot/ ← the installable package
│ ├── Home.py ← Streamlit entry point
│ ├── cli.py ← CLI entry point (5 subcommands)
│ ├── io.py ← 18-format data loader/saver
│ ├── math.py ← 25 analysis functions
│ ├── plotting.py ← 27 plot types (Matplotlib, Seaborn, Plotly)
│ ├── signal.py ← 16 signal processing functions
│ ├── peaks.py ← 5 peak analysis functions
│ ├── data_tools.py ← 12 non-destructive DataFrame operations
│ ├── annotations.py ← 7 Matplotlib overlay types
│ ├── spectroscopy.py ← 18 spectroscopy functions
│ ├── nist.py ← NIST WebBook integration
│ ├── batch.py ← 5 batch processing functions
│ ├── report.py ← PDF report generation
│ ├── plugin_loader.py ← plugin discovery and loading
│ ├── molecular/ ← CPK atom data + vibrational parsers
│ ├── pages/ ← 13 Streamlit pages (1_*.py – 13_*.py)
│ ├── utils/ ← session state, plot config, user settings
│ ├── assets/ ← logo + NCCU branding (shipped in the wheel)
│ ├── gallery/ ← pre-rendered gallery PNGs + manifest.json
│ └── example-data/Artificial/ ← built-in sample datasets
├── tests/ ← pytest suite, 1,000+ tests
├── plugins/ ← plugin_example.py starter template
├── examples/ ← 15+ standalone scripts + batch_config.json
├── docs/ ← tutorials, cheatsheet, site built by build_docs.py
├── generate_gallery.py ← regenerates eagleplot/gallery/
├── requirements.txt
├── pyproject.toml
├── setup.bat / .command / .sh ← First-run setup (Windows / macOS / Linux)
└── launch.bat / .command / .sh ← App launcher (Windows / macOS / Linux)
Runtime assets (assets/, gallery/, example-data/) live inside the package
rather than at the repository root, so they are present after pip install.
Documentation
- Getting Started — installation walkthrough and API examples
- Cheatsheet — quick reference for all plot functions
- CLI Tutorial — step-by-step guide to all 5 CLI commands
- GUI Tutorial — page-by-page walkthrough of the Streamlit app
- Examples — 15+ standalone runnable scripts covering all major workflows
About
Author: Jonathan D. Schultz, PhD — NCCU Department of Chemistry and Biochemistry Institution: North Carolina Central University Use: Research and teaching in computational science License: See LICENSE
Metadata
Release files for eagleplot 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| eagleplot-3.0.0.tar.gz | 820.1 kB | Without provenance | Details for eagleplot-3.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| eagleplot-3.0.0-py3-none-any.whl | Python 3 | none | any | Details for eagleplot-3.0.0-py3-none-any.whl |
Total release size: 1.6 MB
Release files / eagleplot-3.0.0.tar.gz
| Download URL | eagleplot-3.0.0.tar.gz |
|---|---|
| Size | 820.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
113d1328e97fb26e96e836461b7bb749eebcf8602a21187346f7452ffc58f65e
|
|
BLAKE2b-256 checksum How to use checksums |
f19a822e53d6fffd124e18bb8c736673703edb1e3f7b90d8709def27356ee670
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / eagleplot-3.0.0-py3-none-any.whl
| Download URL | eagleplot-3.0.0-py3-none-any.whl |
|---|---|
| Size | 766.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3091cd7f458e031057ceaaea435ac6d0dea52644922b3aa69850927007b0be46
|
|
BLAKE2b-256 checksum How to use checksums |
607bd6f35d4c37cf7127e5d8ec5153a250123c68207cdbd49394762b1988931d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Security for eagleplot 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.