Skip to content
MShirazAhmadPublic

About

PhysPlot: Advanced Plotting Made Simple

Topics

Resources

Contributing

Stars

6 stars

Watchers

2 watching

Forks

Repository files navigation

PhysPlot

PhysPlot logo

Overview

PhysPlot is a scientific plotting and workflow automation application for researchers, engineers, and students who require fast, reproducible, publication-quality figures without relying on large commercial software packages.

Originally conceived in 2019 following a suggestion from Dr. Muhammad Sabieh Anwar, PhysPlot has evolved into a modular scientific plotting platform supporting graphical workflows, reusable plotting protocols, and automated batch processing.

The workflow is intentionally simple:

Load Data
      ↓
Assign Column Roles
      ↓
Apply Transformations
      ↓
Generate Publication-Quality Plot
      ↓
Save Workflow
      ↓
Reuse or Run in Bulk

Features

  • Scientific plotting desktop application built with PyQt
  • Publication-quality figure generation
  • Spreadsheet-style data editor
  • CSV, TXT, Excel, Nanoindentation, and DataFrame support
  • Dynamic data loaders
  • Dynamic mathematical transformation modules
  • Modular plotting architecture
  • Figure templates
  • Reusable workflow protocols
  • Automated batch processing
  • Headless command-line execution
  • Python API
  • 84 Matplotlib plot types in gallery categories, with column roles that follow the plot type
  • Built-in Figure Editor: click any part of a figure to restyle it, export in any format
  • Open data files straight from Finder or Explorer (right-click > Open With > PhysPlot)
  • Plugin-friendly architecture

Video Tutorials

Short live recordings of PhysPlot, one per feature. Click a thumbnail to watch it on YouTube. The same videos play inside the matching pages of the documentation.

PhysPlot Basics: Simple Mode, from typing data to curve fitting. It starts with 0. Install PhysPlot on Windows (2:10), from a fresh Windows 11 to PhysPlot in the Start menu.

The PhysPlot Window
1. The PhysPlot Window · 0:18
Entering Values
2. Entering Values · 0:21
Column Roles
3. Column Roles · 0:11
Generating Plots
4. Generating Plots · 0:19
Error Bars
5. Error Bars · 0:24
Curve Fitting
6. Curve Fitting · 0:23
Importing Data
7. Importing Data · 0:16
Transformations
8. Transformations · 0:31

PhysPlot Advanced: recorded protocols, Sequence.py files, bulk runs, and writing your own file loaders and plotter modules.

Recorded Protocol
1. Recorded Protocol · 0:17
Saving a Sequence
2. Saving a Sequence · 0:12
Bulk Processing
3. Bulk Processing · 0:21
How to Create a New File Loader
4. New File Loader · 1:52
How to Create a Plotter Module
5. New Plotter Module · 2:01
Bulk Processing OES Spectra
6. Bulk OES Spectra · 1:21

Branches

PhysPlot is developed on three branches. Pick the one that matches how much change you want:

Branch Channel Purpose Who it is for Documentation
main Stable Tested releases. Changes arrive here only after they have been used on indevelopment. Everyday use, teaching, lab work. main
indevelopment Development The next release. New work is finished and reviewed here; it is the repository's default branch and builds the default documentation. Trying new features before a release; contributors. latest (default)
bleedingedge Bleeding edge Experiments and the newest features first (for example new plot types and editor tools). It may break; what works well moves on to indevelopment. Early testers who want the newest features and can report problems. bleedingedge

Changes flow bleedingedge → indevelopment → main.

Install a particular branch. The one-command installers below install main (Stable). For another branch, set PHYSPLOT_REF, for example on macOS:

curl -fsSL https://raw.githubusercontent.com/MShirazAhmad/PhysPlot/main/scripts/install_macos.sh | PHYSPLOT_REF=bleedingedge bash

and on Windows (PowerShell):

$env:PHYSPLOT_REF='bleedingedge'; irm https://raw.githubusercontent.com/MShirazAhmad/PhysPlot/main/scripts/install_windows.ps1 | iex

Use indevelopment for the Development branch. From source, check out the branch with git clone -b <branch> https://github.com/MShirazAhmad/PhysPlot.git.


Installation

Option 1 — macOS: one command (Recommended on Mac)

Open Terminal and paste:

curl -fsSL https://raw.githubusercontent.com/MShirazAhmad/PhysPlot/main/scripts/install_macos.sh | bash

The script finds Python 3.12–3.14 (or installs Python 3.12 with Homebrew), installs PhysPlot and its dependencies into ~/.physplot, and creates PhysPlot.app in ~/Applications. Run it again to update; uninstall with rm -rf ~/.physplot ~/Applications/PhysPlot.app.


Option 2 — Windows: one command

Open PowerShell (right-click the Start button → Terminal) and paste:

irm https://raw.githubusercontent.com/MShirazAhmad/PhysPlot/main/scripts/install_windows.ps1 | iex

Nothing needs to be installed first. The script finds Python 3.12–3.14, or installs Python 3.12 for you (with winget, or from python.org), installs PhysPlot and its dependencies into %LOCALAPPDATA%\PhysPlot, and adds a PhysPlot Start-menu shortcut. Close PhysPlot and run it again to update.

To uninstall, close PhysPlot and run:

irm https://raw.githubusercontent.com/MShirazAhmad/PhysPlot/main/scripts/uninstall_windows.ps1 | iex

It removes PhysPlot, its Start-menu shortcut, the Open with entries and its settings, and keeps your files in Documents\PhysPlot and Python. Run $env:PHYSPLOT_REMOVE_USER_FILES = "1" and/or $env:PHYSPLOT_REMOVE_PYTHON = "1" first to remove those too (removing Python affects other programs that use it).

Install PhysPlot on Windows
Video: Install PhysPlot on Windows (2:10), on a fresh Windows 11 with no Python.

A classic setup program can be built with scripts/build_windows_installer.ps1; when a release on the Releases page includes PhysPlot-<version>-Windows-Setup.exe, you can download that instead.


Option 3 — Run from Source

Clone the repository:

git clone https://github.com/MShirazAhmad/PhysPlot.git
cd PhysPlot

Create a virtual environment:

/opt/homebrew/opt/python@3.12/bin/python3.12 -m venv .venv
source .venv/bin/activate

Verify Python:

python --version

Expected output:

Python 3.12.x

Upgrade pip and install the project requirements:

python -m pip install --upgrade pip
python -m pip install -e ".[dev]"

Launch PhysPlot:

.venv/bin/python -m physplot_gui

When the virtual environment is activated, the console entry point is also available:

physplot-gui

Tested Environment

PhysPlot has been tested with:

Component Version
Python 3.12.x (Homebrew)
Operating System macOS (Apple Silicon)

The package metadata in pyproject.toml is the source of truth for runtime and development dependencies. requirements.txt mirrors the runtime dependencies for environments that require requirements-file installs.


Documentation

Complete project documentation is available online.

Additional project documentation:

  • Maintainer Project Guide
  • Contributing Guide
  • Trademark and Branding

GUI Workflow

The graphical interface follows a table-first workflow.

Simple Mode

  1. Import Data
  2. Apply Mathematical Transformations
  3. Select Plot Module
  4. Apply Figure Template
  5. Generate Plot
  6. Edit Figure
  7. Export Figure

Advanced Mode

Build Protocol

Create, edit, save, and reuse Python workflow protocols.

Run Sequence

Execute saved workflows on entire folders for automated batch processing.


Python API

PhysPlot can also be used directly from Python.

from physplot import PhysPlot

pp = PhysPlot()

pp.load("data.csv")
pp.set_roles(
    x="Time",
    y="Voltage"
)

fig = pp.plot_with_module(
    "basic",
    "scatter"
)

Command-Line Examples

Show version:

physplot --version

Run a workflow:

physplot run-workflow workflow.py \
    --input data.csv \
    --output outputs/run

Run batch processing:

physplot run-bulk workflow.py \
    --input-folder data \
    --output-folder outputs/batch

Supported Data Sources

  • CSV
  • TXT
  • Microsoft Excel
  • Nanoindentation datasets
  • Pandas DataFrames

License

PhysPlot source code is licensed under the PolyForm Noncommercial License 1.0.0.

You may:

  • Study the source code
  • Fork the repository
  • Modify the software for noncommercial purposes
  • Submit improvements through pull requests

Commercial use requires prior written permission from the project originator.

Documentation, tutorials, screenshots, and educational material are licensed under the Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0) unless otherwise noted.

The PhysPlot name, logo, application icon, GUI branding, and visual identity remain reserved by the project originator. Modified versions must not be represented as official PhysPlot releases.

For contribution policies and branding guidelines, see:

  • CONTRIBUTING.md
  • TRADEMARK.md

About

PhysPlot: Advanced Plotting Made Simple

Topics

Resources

Contributing

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages