Skip to main content

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

PyPI version Python 3.10+ License: MIT


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 web-based UI powered by NiceGUI 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

Advanced Features

  • Configuration files: Expert users can use TOML files for reproducible workflows
  • Headless rendering: Batch processing without the UI
  • Detailed error messages: Clear, actionable feedback for data issues

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 web interface on http://localhost:8050 and automatically open it in your browser.

Command-Line Options

# Start on a specific port
plottini --port 8080

# Don't open browser automatically
plottini --no-open

# Load a configuration file
plottini --config my-graph.toml

Expert Mode: Headless Rendering

For automation and batch processing:

plottini render --config my-graph.toml --output figure.png

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

Configuration File Format

For reproducible workflows, you can create a TOML configuration file:

# my-graph.toml

[[files]]
path = "data/experiment1.tsv"
has_header = true
comment_chars = ["#"]

[[series]]
x = "time"
y = "velocity"
label = "Experiment 1"
color = "#0072B2"
transform_y = "log10"

[plot]
type = "line"
title = "Velocity over Time"
x_label = "Time (s)"
y_label = "Velocity (m/s)"
figure_width = 10.0
figure_height = 6.0

[export]
format = "png"
dpi = 300

Load it with:

plottini --config my-graph.toml

Or render directly:

plottini render --config my-graph.toml --output velocity.png

See PLAN.md for the complete configuration specification.


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 / col2
  • sqrt(col1**2 + col2**2)
  • 0.5 * mass * velocity**2

Requirements

  • Python 3.10 or higher
  • matplotlib ≥ 3.7
  • numpy ≥ 1.24
  • nicegui ≥ 1.4
  • click ≥ 8.1

Documentation

  • PLAN.md - Complete implementation plan and technical specifications
  • CONTRIBUTING.md - Development setup and contribution guidelines
  • AGENTS.md - Instructions for AI agents working on the project

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for:

  • Development setup instructions
  • Code style guidelines
  • Testing requirements
  • Pull request process

Roadmap

See PLAN.md for the detailed implementation plan.

Current Status: Phase 1 - Core Foundation

  • Project structure
  • Package configuration
  • CLI framework
  • CI/CD pipelines
  • TSV Parser implementation
  • DataFrame implementation
  • Basic plotting (Line, Bar, Pie)
  • Export functionality
  • UI implementation

License

MIT License - see LICENSE file for details.

Copyright (c) 2025 Lallu Anthoor


Support


Acknowledgments

Built with:


Plottini - Making publication-quality graphs accessible to everyone.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plottini-0.5.0.tar.gz (78.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plottini-0.5.0-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file plottini-0.5.0.tar.gz.

File metadata

  • Download URL: plottini-0.5.0.tar.gz
  • Upload date:
  • Size: 78.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plottini-0.5.0.tar.gz
Algorithm Hash digest
SHA256 a5af8119fa8b91908d82e603328c8b4fc3b7cab2ec351509d03371306a4c61b2
MD5 2e7c8344e9be860619d00f0bf81318c4
BLAKE2b-256 05f5ea2e169adea58c933e2e1d64fa17a9efd6a83b4163c034f654f6a1c85cdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for plottini-0.5.0.tar.gz:

Publisher: publish.yml on lanthoor/plottini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plottini-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: plottini-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plottini-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dcf72476548585a9338f72b4a5e16f866804a026195bbf253d19f0211b9c75cd
MD5 3d16a7c7e1a125b4c91746bcf1769a59
BLAKE2b-256 efb471860d72a93db1f17115231d72b91d1771b2675cb1bc02a166136baf360c

See more details on using hashes here.

Provenance

The following attestation bundles were made for plottini-0.5.0-py3-none-any.whl:

Publisher: publish.yml on lanthoor/plottini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page