Skip to content

Repository files navigation

anyplot.ai

anyplot.ai

Python 3.13+License: MITTestsRuffcodecov

library-agnostic, ai-powered plotting examples.


What is anyplot?

anyplot is an AI-powered platform for data visualization that automatically discovers, generates, tests, and maintains plotting examples. Browse hundreds of plots across 15 major visualization libraries in Python, R, Julia, and JavaScript — matplotlib, seaborn, plotly, bokeh, altair, plotnine, pygal, lets-plot, ggplot2, Makie.jl, Chart.js, D3.js, ECharts, Highcharts, and MUI X Charts (React) — with an architecture ready to welcome additional ecosystems over time.

Community-driven, AI-maintained - Propose plot ideas via GitHub Issues, AI generates the code, automated quality checks ensure excellence. Zero manual coding required.


Features

  • AI-generated code - All implementations automatically generated and maintained by AI
  • Compare libraries - View matplotlib, seaborn, plotly side-by-side for the same plot
  • Always current - AI agents continuously update examples with latest library versions
  • Natural language search - Find plots by asking "show correlation between variables"
  • AI quality review - Claude evaluates every plot against quality standards (score ≥ 50 required)
  • Open source - Community proposes ideas via Issues, AI generates the code

Architecture

Specification-first design: Every plot starts as a Markdown spec (library-agnostic), then AI generates implementations for all 15 supported libraries across Python, R, Julia, and JavaScript.

plots/scatter-basic/
├── specification.md # Library-agnostic specification
├── specification.yaml # Tags, created, issue, suggested
├── metadata/ # Per-library metadata (quality scores, preview URLs)
│ ├── python/
│ │ ├── matplotlib.yaml
│ │ └── ...
│ └── javascript/
│ └── muix.yaml
└── implementations/ # Grouped by language; one file per library
├── python/
│ ├── matplotlib.py
│ ├── seaborn.py
│ └── ... (6 more)
├── r/ggplot2.R
├── julia/makie.jl
└── javascript/
├── chartjs.js # framework-agnostic JS libs → .js
├── d3.js
├── echarts.js
├── highcharts.js
└── muix.tsx # MUI X — React, authored as .tsx

Issue-based workflow: GitHub Issues as state machine for plot lifecycle. Status tracked via live-updating table (no sub-issues). Each library generates in parallel, creating PRs to a feature branch.

AI quality review: Claude evaluates generated plots using cascading thresholds (90/80/70/60/50) over 4 repair attempts. Final score ≥ 50 required for merge.

See docs/reference/ for details.


Tech Stack

Backend: FastAPI • PostgreSQL • SQLAlchemy • Python 3.13+

Frontend: React 19 • Vite • TypeScript • MUI

Plotting (Python): matplotlib • seaborn • plotly • bokeh • altair • plotnine • pygal • lets-plot Plotting (R): ggplot2 Plotting (Julia): Makie.jl Plotting (JavaScript): Chart.js • D3.js • ECharts • Highcharts • MUI X Charts (React)

Infrastructure: Google Cloud Run • Cloud SQL • Cloud Storage

Automation: GitHub Actions

AI: Claude (code generation + quality review)


MCP Server

anyplot provides an MCP (Model Context Protocol) server for AI assistants to search plot specifications and fetch implementation code.

Available Tools:

  • list_specs - List all plot specifications
  • search_specs_by_tags - Search by plot type, domain, features, library
  • get_spec_detail - Get full specification with all implementations
  • get_implementation - Get code for a specific library
  • list_libraries - List supported plotting libraries
  • get_tag_values - Get available tag values by category

Configuration

Add to your MCP client configuration (e.g., Claude Code .mcp.json):

Streamable HTTP Transport (the only supported transport):

{
"mcpServers": {
"anyplot": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.anyplot.ai/mcp/"]
}
}
}

Clients with native Streamable HTTP support can connect to https://api.anyplot.ai/mcp/ directly, without the mcp-remote bridge.

The legacy SSE endpoint (https://api.anyplot.ai/sse/) has been removed — update any configuration still pointing at it.


License Notes

Most plotting libraries are fully open source. Note these exceptions:

  • Highcharts: Free for non-commercial use. Commercial use requires a license from highcharts.com

Project Structure

anyplot/
├── plots/ # Plot specs + metadata + implementations
├── prompts/ # AI agent prompts
├── api/ # FastAPI backend
├── app/ # React frontend
├── core/ # Shared business logic
├── automation/ # Workflow scripts (sync, labels)
├── tests/ # Test suite (unit, integration, e2e)
├── alembic/ # Database migrations
├── docs/ # Documentation
└── .github/workflows/ # GitHub Actions

For details, see Repository Structure


Documentation

  • Vision - Product vision and mission
  • Contributing - How to add/improve specs and implementations
  • Workflows - Automation flows and label system
  • Reference - API, database, repository structure

Contributing

We welcome contributions! All code is AI-generated - you propose ideas, AI implements them.

Three ways to contribute (from anyplot.ai or GitHub):

ActionWhen to UseFrom anyplot.ai
Suggest SpecPropose a new plot type"suggest spec" link in catalog
Report Spec IssueProblem with a specification"report issue" link on spec page
Report Impl IssueProblem with a library implementation"report issue" link on impl page

How it works:

  1. You create Issue (or click link on anyplot.ai)
  2. AI validates and processes your input
  3. Maintainer reviews and approves
  4. AI generates/fixes the code
  5. Automated quality review ensures excellence

Important: Don't submit code directly! If a plot has quality issues, it means the spec needs improvement, not the code.

See contributing.md for details.


Development

See Development Guide for local setup instructions.


License

MIT License - see LICENSE file for details.


Links


About

AI-powered plotting gallery. One spec, nine libraries — matplotlib, plotly, seaborn, bokeh, altair & more. Compare and copy working code.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages