https://github.com/markusneusinger/anyplot
AI-powered plotting gallery. One spec, nine libraries — matplotlib, plotly, seaborn, bokeh, altair & more. Compare and copy working code.
https://github.com/markusneusinger/anyplot
ai-generated altair bokeh code-examples data-visualization gallery highcharts letsplot matplotlib plotly plotnine plotting-library pygal python seaborn
Last synced: 22 days ago
JSON representation
AI-powered plotting gallery. One spec, nine libraries — matplotlib, plotly, seaborn, bokeh, altair & more. Compare and copy working code.
- Host: GitHub
- URL: https://github.com/markusneusinger/anyplot
- Owner: MarkusNeusinger
- License: mit
- Created: 2025-11-18T18:15:06.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-04-23T22:10:14.000Z (28 days ago)
- Last Synced: 2026-04-23T23:33:53.478Z (27 days ago)
- Topics: ai-generated, altair, bokeh, code-examples, data-visualization, gallery, highcharts, letsplot, matplotlib, plotly, plotnine, plotting-library, pygal, python, seaborn
- Language: Python
- Homepage: https://anyplot.ai
- Size: 37.7 MB
- Stars: 7
- Watchers: 0
- Forks: 0
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README

**→ [anyplot.ai](https://anyplot.ai)**
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/MarkusNeusinger/anyplot/actions/workflows/ci-tests.yml)
[](https://github.com/MarkusNeusinger/anyplot/actions/workflows/ci-lint.yml)
[](https://codecov.io/github/MarkusNeusinger/anyplot)
> 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 major visualization libraries — matplotlib, seaborn,
plotly, bokeh, altair, plotnine, pygal, highcharts, and lets-plot — 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 9 supported libraries.
```
plots/scatter-basic/
├── specification.md # Library-agnostic specification
├── specification.yaml # Tags, created, issue, suggested
├── metadata/ # Per-library metadata (quality scores, preview URLs)
│ ├── matplotlib.yaml
│ └── ...
└── implementations/
├── matplotlib.py
├── seaborn.py
├── plotly.py
└── ... (6 more)
```
**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/](docs/reference/) for details.
---
## Tech Stack
**Backend**: FastAPI • PostgreSQL • SQLAlchemy • Python 3.14+
**Frontend**: React 19 • Vite • TypeScript • MUI
**Plotting**: matplotlib • seaborn • plotly • bokeh • altair • plotnine • pygal • highcharts • lets-plot
**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)](https://modelcontextprotocol.io/) 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`):
**SSE Transport** (recommended, wider compatibility):
```json
{
"mcpServers": {
"anyplot": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.anyplot.ai/sse/"]
}
}
}
```
**Streamable HTTP Transport** (modern, bidirectional):
```json
{
"mcpServers": {
"anyplot": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.anyplot.ai/mcp/"]
}
}
}
```
---
## 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](https://www.highcharts.com/license)
---
## 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](docs/reference/repository.md)
---
## Documentation
- **[Vision](docs/concepts/vision.md)** - Product vision and mission
- **[Contributing](docs/contributing.md)** - How to add/improve specs and implementations
- **[Workflows](docs/workflows/overview.md)** - Automation flows and label system
- **[Reference](docs/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](https://anyplot.ai) or GitHub):
| Action | When to Use | From anyplot.ai |
|--------|-------------|-----------------|
| **Suggest Spec** | Propose a new plot type | "suggest spec" link in catalog |
| **Report Spec Issue** | Problem with a specification | "report issue" link on spec page |
| **Report Impl Issue** | Problem 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](docs/contributing.md) for details.
---
## Development
See **[Development Guide](docs/development.md)** for local setup instructions.
---
## License
MIT License - see [LICENSE](LICENSE) file for details.
---
## Links
- **Website**: [anyplot.ai](https://anyplot.ai)
- **Documentation**: [docs/](docs/)
- **Issues**: [GitHub Issues](https://github.com/MarkusNeusinger/anyplot/issues)
- **Discussions**: [GitHub Discussions](https://github.com/MarkusNeusinger/anyplot/discussions)
- **Stats**: [Public Analytics](https://plausible.io/anyplot.ai)
---
**Built by [Markus Neusinger](https://linkedin.com/in/markus-neusinger/)**
[⭐ Star us on GitHub](https://github.com/MarkusNeusinger/anyplot) • [💡 Request New Plot](https://github.com/MarkusNeusinger/anyplot/issues/new?template=request-new-plot.yml)