# agrapidis-n/graphing-studio architecture

> Architecture diagram of the GitHub repository agrapidis-n/graphing-studio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/agrapidis-n/graphing-studio
- Repository: https://github.com/agrapidis-n/graphing-studio

## Overview

Graphing Studio is a desktop chart-authoring application: users organize projects into figures, subplots, and series; configure and render 2D/3D charts; then save projects or export figures. The runtime is concentrated in one large Python file, so several distinct responsibilities share that path. The excerpts show project-tree construction, Matplotlib rendering, and project-load processing; README-documented capabilities supply links for unsampled workflows. The source index lists no dependencies for the monolithic file, so internal call ownership beyond those excerpts is not established.

Main entry points: [`graphing-studio.py`](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py) (Desktop workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Project authoring"]
  node_desktop["Desktop workspace<br/>[graphing-studio.py]"]
  node_project["Project structure<br/>[graphing-studio.py]"]
  node_figure_editor["Figure and subplot editor<br/>[graphing-studio.py]"]
  node_series_editor["Series and styles<br/>[graphing-studio.py]"]
  node_function_input["Function plotting<br/>[graphing-studio.py]"]
end

subgraph group_rendering["Chart rendering"]
  node_mpl_renderer["Matplotlib renderer<br/>[graphing-studio.py]"]
  node_plotly_renderer["Plotly rendering<br/>[graphing-studio.py]"]
  node_rendered_chart["Interactive chart"]
end

subgraph group_lifecycle["Project and output"]
  node_project_files["Project save and load<br/>[graphing-studio.py]"]
  node_autosave["Autosave<br/>[graphing-studio.py]"]
  node_recent_projects["Recent projects<br/>[graphing-studio.py]"]
  node_figure_export["Figure export<br/>[graphing-studio.py]"]
end

node_user(("Chart author"))

node_user -->|"uses"| node_desktop
node_desktop -->|"organizes"| node_project
node_desktop -->|"edits figures"| node_figure_editor
node_figure_editor -->|"structures"| node_project
node_desktop -->|"configures series"| node_series_editor
node_desktop -.->|"adds functions"| node_function_input
node_desktop -->|"renders charts"| node_mpl_renderer
node_project -->|"supplies figure data"| node_mpl_renderer
node_desktop -.->|"renders interactively"| node_plotly_renderer
node_plotly_renderer -.->|"displays"| node_rendered_chart
node_desktop -->|"saves and loads"| node_project_files
node_project_files -->|"restores data"| node_project
node_desktop -->|"autosaves"| node_autosave
node_desktop -->|"tracks projects"| node_recent_projects
node_desktop -->|"exports figures"| node_figure_export

click node_desktop "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_project "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_figure_editor "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_series_editor "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_function_input "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_mpl_renderer "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_plotly_renderer "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_project_files "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_autosave "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_recent_projects "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"
click node_figure_export "https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop,node_project,node_figure_editor,node_series_editor,node_function_input toneBlue
class node_mpl_renderer,node_plotly_renderer,node_rendered_chart toneAmber
class node_project_files,node_autosave,node_recent_projects,node_figure_export toneMint
class node_user toneIndigo
```

## Components

### Project authoring

- [Desktop workspace](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Project structure](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Figure and subplot editor](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Series and styles](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Function plotting](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`

### Chart rendering

- [Matplotlib renderer](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Plotly rendering](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- **Interactive chart**

### Project and output

- [Project save and load](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Autosave](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Recent projects](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`
- [Figure export](https://github.com/agrapidis-n/graphing-studio/blob/main/graphing-studio.py): `graphing-studio.py`

### Other components

- **Chart author**

## Connections

- Chart author → Desktop workspace: uses (evidence: `README.md`)
- Desktop workspace → Project structure: organizes (evidence: `README.md`)
- Desktop workspace → Figure and subplot editor: edits figures (evidence: `README.md`)
- Figure and subplot editor → Project structure: structures (evidence: `graphing-studio.py`)
- Desktop workspace → Series and styles: configures series (evidence: `README.md`)
- Desktop workspace → Function plotting: adds functions (evidence: `graphing-studio.py`)
- Desktop workspace → Matplotlib renderer: renders charts (evidence: `graphing-studio.py`)
- Project structure → Matplotlib renderer: supplies figure data (evidence: `graphing-studio.py`)
- Desktop workspace → Plotly rendering: renders interactively (evidence: `README.md`)
- Plotly rendering → Interactive chart: displays (evidence: `README.md`)
- Desktop workspace → Project save and load: saves and loads (evidence: `README.md`)
- Project save and load → Project structure: restores data (evidence: `graphing-studio.py`)
- Desktop workspace → Autosave: autosaves (evidence: `README.md`)
- Desktop workspace → Recent projects: tracks projects (evidence: `README.md`)
- Desktop workspace → Figure export: exports figures (evidence: `README.md`)
