Day 081 — 可视化架构图解
Matplotlib 架构
┌─────────────────────────────────────────────────────┐
│ 用户代码 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ pyplot (MATLAB 风格接口) │ │
│ │ plt.plot() plt.show() plt.savefig() │ │
│ └───────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Figure (画布) │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Axes 1 │ │ Axes 2 │ ... │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │ Axis X │ │ │ │ Axis X │ │ │ │
│ │ │ │ Axis Y │ │ │ │ Axis Y │ │ │ │
│ │ │ └─────────┘ │ │ └─────────┘ │ │ │
│ │ │ Artists: │ │ Artists: │ │ │
│ │ │ - Lines │ │ - Bars │ │ │
│ │ │ - Text │ │ - Patches │ │ │
│ │ │ - Patches │ │ - Text │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └───────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Backend (渲染后端) │ │
│ │ Agg (PNG) │ PDF │ SVG │ GTK │ Qt │ WebAgg │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
GridSpec 布局示例
┌──────────────┬──────────────┬──────────────┐
│ │ │ │
│ gs[0,0] │ gs[0,1] │ gs[0,2] │
│ │ │ │
├──────────────┼──────────────┼──────────────┤
│ │ │ │
│ gs[1,0] │ gs[1,1] │ gs[1,2] │
│ │ │ │
├──────────────┼──────────────┼──────────────┤
│ │ │ │
│ gs[2,0] │ gs[2,1] │ gs[2,2] │
│ │ │ │
└──────────────┴──────────────┴──────────────┘
跨行/跨列:
┌──────────────────────┬──────────────┐
│ │ │
│ gs[0:2, 0:2] │ gs[0, 2] │
│ (跨2行2列) │ │
│ ├──────────────┤
│ │ │
│ │ gs[1, 2] │
│ │ │
├──────────┬───────────┼──────────────┤
│ │ │ │
│ gs[2,0] │ gs[2,1] │ gs[2, 2] │
│ │ │ │
└──────────┴───────────┴──────────────┘
Matplotlib vs Plotly 对比
Matplotlib Plotly
┌─────────────────┐ ┌─────────────────┐
│ 静态渲染 │ │ 交互式渲染 │
│ PNG/PDF/SVG │ │ HTML/图片 │
├─────────────────┤ ├─────────────────┤
│ ✅ 极高自定义 │ │ ✅ 原生交互 │
│ ✅ 论文/报告 │ │ ✅ Web/仪表盘 │
│ ✅ 轻量文件 │ │ ✅ 动画支持 │
│ ❌ 无交互 │ │ ❌ 文件较大 │
│ ❌ 部署复杂 │ │ ❌ 自定义受限 │
└─────────────────┘ └─────────────────┘
│ │
└──────────┬─────────────────┘
│
┌────▼────┐
│ Seaborn │ ← 基于 Matplotlib 的高层 API
│ Dash │ ← 基于 Plotly 的 Web 框架
└─────────┘