A user-friendly graph builder with matplotlib backend for creating publication-quality plots from TSV data
Project description
Plottini
A user-friendly graph builder for creating publication-quality plots from TSV data
Overview
Plottini is designed for researchers, scientists, and anyone who needs to create high-quality graphs from tabular data without writing code. With an intuitive UI powered by Streamlit (available as a desktop app via PyWebView or in the browser) and matplotlib as the rendering backend, Plottini makes it easy to:
- Load TSV data files with automatic validation
- Create various chart types (line, bar, scatter, histogram, and more)
- Apply mathematical transformations to your data
- Overlay multiple datasets on the same plot
- Export publication-ready figures in PNG, SVG, PDF, or EPS formats
Features
Core Capabilities
- Multiple data sources: Load one or more TSV files with configurable headers and comment delimiters
- Rich chart types: Line, Bar, Pie, Scatter, Histogram, Polar, Box, Violin, Area, and more
- Data transformations: Apply preset functions (log, sqrt, power, trig functions) to your data
- Derived columns: Create computed columns using safe mathematical expressions
- Data filtering: Filter rows by value ranges before plotting
- Multi-file alignment: Align multiple datasets by a common column
- Secondary Y-axis: Display two different scales on the same plot
- Live preview: See your changes in real-time as you configure your plot
- Publication quality: Colorblind-safe palettes and professional styling by default
Export Options
- Formats: PNG, SVG, PDF, EPS
- Configurable DPI: High-resolution output for publications
- Vector formats: Scalable graphics for presentations and papers
Installation
From PyPI
pip install plottini
From Source
git clone https://github.com/lanthoor/plottini.git
cd plottini
pip install -e .
Quick Start
Start the UI
plottini
This will start the desktop app (using PyWebView) with the Streamlit-based interface.
Command-Line Options
# Start on a specific port
plottini --port 8080
# Show version
plottini version
Usage
1. Load Your Data
- Click "+ Add Files" to load one or more TSV files
- Toggle "Has header row" if your files have column names
- Set comment characters (default:
#)
2. Preview Your Data
- View a paginated table of your parsed data
- Verify that all values were correctly interpreted as numbers
3. Configure Series
- Select which columns to plot on X and Y axes
- Choose colors, line styles, and markers
- Apply transformations (log scale, square root, etc.)
- Use secondary Y-axis for different scales
4. Customize Plot Settings
- Select chart type
- Add title and axis labels
- Configure grid, legend, and figure size
- Adjust font sizes for publication
5. Advanced Options
- Derived Columns: Create new columns from expressions like
col1 / col2 - Filters: Exclude data outside specified ranges
- Multi-file Alignment: Merge datasets by a common column
- Layout: Overlay series or create separate subplots
6. Export
- Choose format: PNG, SVG, PDF, or EPS
- Set DPI for raster formats
- Click "Export" to save your figure
Supported Chart Types
| Category | Chart Types |
|---|---|
| Basic | Line, Scatter, Bar (vertical/horizontal) |
| Statistical | Histogram, Box plot, Violin plot |
| Area | Area, Stacked area |
| Specialized | Stem, Step, Error bar, Pie, Polar |
Mathematical Transformations
Available preset transformations:
- Logarithmic: log, log10, log2
- Power: square, cube, sqrt, cbrt
- Trigonometric: sin, cos, tan, arcsin, arccos, arctan
- Other: abs, inverse (1/x), exp, negate
Derived Columns: Create custom expressions like:
col1 / col2sqrt(col1**2 + col2**2)0.5 * mass * velocity**2
Requirements
- Python 3.10 or higher
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for:
- Development setup instructions
- Code style guidelines
- Testing requirements
- Pull request process
License
Support
- Issues: GitHub Issues
- Author: Lallu Anthoor (dev@spendly.co.in)
Acknowledgments
Built with:
- matplotlib - The plotting backend
- Streamlit - The web UI framework
- PyWebView - Desktop app wrapper
- Click - CLI framework
- NumPy - Numerical computing
Plottini - Making publication-quality graphs accessible to everyone.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plottini-2026.2.3.tar.gz.
File metadata
- Download URL: plottini-2026.2.3.tar.gz
- Upload date:
- Size: 80.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb876fc488290f42c1b67f6608ddb0892dda14fa430dec7cd7bfd4c53ab082c3
|
|
| MD5 |
019e7940fd1cb5fb7820dcdd09cfa790
|
|
| BLAKE2b-256 |
57be30f9104758be09aa105082bd1f0dc540ad7fb9db57399b2f2f9a184b0efc
|
Provenance
The following attestation bundles were made for plottini-2026.2.3.tar.gz:
Publisher:
publish.yml on lanthoor/plottini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plottini-2026.2.3.tar.gz -
Subject digest:
bb876fc488290f42c1b67f6608ddb0892dda14fa430dec7cd7bfd4c53ab082c3 - Sigstore transparency entry: 976372748
- Sigstore integration time:
-
Permalink:
lanthoor/plottini@266686d120f4e3892c54fafd49fab9b947b5846f -
Branch / Tag:
refs/tags/v2026.2.3 - Owner: https://github.com/lanthoor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@266686d120f4e3892c54fafd49fab9b947b5846f -
Trigger Event:
push
-
Statement type:
File details
Details for the file plottini-2026.2.3-py3-none-any.whl.
File metadata
- Download URL: plottini-2026.2.3-py3-none-any.whl
- Upload date:
- Size: 46.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f32d96a2ac5e73a92979b392e6b49f28afe0fd6db5de577b11549b58032b7883
|
|
| MD5 |
4e240870499d7a1e4e41bcea1d1cb67a
|
|
| BLAKE2b-256 |
c440f3795c586f9b0746c0736873d8bf280b46bb882d94149b0e13cc9f2b60af
|
Provenance
The following attestation bundles were made for plottini-2026.2.3-py3-none-any.whl:
Publisher:
publish.yml on lanthoor/plottini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plottini-2026.2.3-py3-none-any.whl -
Subject digest:
f32d96a2ac5e73a92979b392e6b49f28afe0fd6db5de577b11549b58032b7883 - Sigstore transparency entry: 976372752
- Sigstore integration time:
-
Permalink:
lanthoor/plottini@266686d120f4e3892c54fafd49fab9b947b5846f -
Branch / Tag:
refs/tags/v2026.2.3 - Owner: https://github.com/lanthoor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@266686d120f4e3892c54fafd49fab9b947b5846f -
Trigger Event:
push
-
Statement type: