PlotSense
AI智能推荐数据可视化方案,自动选图表+生成自然语言解读
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI智能推荐数据可视化方案,自动选图表+生成自然语言解读
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
凌晨两点,数据分析师小王正在处理一份陌生的销售数据集。几十个字段、数万行数据,他想快速了解"哪些变量之间存在关联""哪些字段适合做柱状图还是散点图"。打开 matplotlib 文档翻了半小时,又在 Matplotlib Gallery 里找了半天,最后勉强画了几张图,却发现漏掉了一个关键的分布异常值——如果一开始就画直方图本来能一眼看到。
这样的场景在数据分析工作中极为普遍。选择正确的可视化方案本身就需要经验积累,而大多数数据分析师并非可视化专家。PlotSense 正是为解决这个痛点而生:让 AI 自动分析数据结构,推荐最适合的可视化方案,并生成通俗的自然语言解读。
PlotSense 由 PlotSenseAI 社区团队开发,核心成员包括 Christian Chimezie、Toluwaleke Ogidan、Grace Farayola 等 7 位贡献者,采用 Apache-2.0 开源许可证。项目采用 Python(核心库)+ React/TypeScript(Web UI)的混合架构,Python 包支持 pip 一键安装,Web UI 使用 Vite + React 19 + Tailwind CSS 构建。
值得注意的是,该项目有完整的 CI/CD 流程:Python 单元测试(pytest + pytest-cov)和前端测试(Vitest)分别独立运行,并接入 Codecov 做覆盖率追踪,还配置了 pre-commit 代码质量检查(flake8、bandit 安全扫描)。这在中小型开源数据项目中较为少见。
PlotSense 的 Python 包导出三个核心 API,构成了完整的智能可视化工作流:
这是 PlotSense 的核心能力。传入一个 pandas DataFrame,VisualizationRecommender 会分析数据列的类型(数值型、分类型、时间型等)和数据分布特征,结合变量间关系推断,向用户推荐多个适合的可视化方案,并给出推荐理由。
推荐逻辑基于 LLM 推理:项目默认使用 Groq Cloud 的 llama-3.3-70b-versatile 模型,通过 Prompt 让大模型"理解"数据特征后输出推荐结果。推荐结果以 DataFrame 形式返回,包含图表类型、适用变量、推荐理由等字段。
拿到推荐结果后,PlotGenerator 负责实际绘图。它接收原始 DataFrame 和推荐结果 DataFrame,内部维护一个图表函数字典,支持散点图、柱状图、折线图、直方图、热力图等多种类型。生成的图表基于 matplotlib,风格统一,可直接用于报告或仪表盘。
这是 PlotSense 最有差异化的功能。传入一张 matplotlib Figure(图表对象),PlotExplainer 会将图表编码为图片,通过 LLM 分析图表中的数据模式,生成一段通俗易懂的英文自然语言解释。例如:"这张散点图显示 X 和 Y 之间存在明显的正相关关系,数据点在 20-40 区间最为密集。"
解读过程支持多轮优化(max_iterations=3):如果首次解读不够准确,可以触发重试迭代,直到结果满意为止。

图 1:PlotSense 智能推荐表示意图,展示不同图表类型的推荐规则
PlotSense 的架构设计值得深入分析。核心模块 plotsense/core/ 包含一套完整的 LLM Provider 编排框架:
ProviderManager 是统一入口,支持 Groq(默认)、OpenAI(两种接口)、Anthropic、Gemini、Azure OpenAI、Ollama 等多种 LLM 服务商。不同服务商有各自的 Provider 类实现(均继承自 LLMProvider 基类),项目还支持注册自定义 Provider。
AIModelInterface 负责高层调用编排,支持四种策略模式:
ROUND_ROBIN:轮询所有可用模型COST_OPTIMIZED:选择最便宜的模型PERFORMANCE:选择性能最优的模型FALLBACK_CHAIN:链式降级,优先用贵的,失败后降级这种"策略模式 + Provider 抽象"的设计,使 PlotSense 可以轻松扩展新模型、新服务商,同时也让用户在成本和质量之间灵活取舍。
前端 Web UI 基于 React 19 + TypeScript + Tailwind CSS + Vite 构建,使用 framer-motion 做动画,Vitest + Testing Library 做测试。Web UI 提供了图形化的数据上传和图表展示界面,降低了非程序员的使用门槛。
PlotSense 以 pip 安装为主,不支持 Docker。安装方式:
pip install plotsense
# 或使用更快的 uv
uv pip install plotsense
安装后需要配置 LLM API Key(默认使用 Groq Cloud,提供免费额度)。无需 GPU,普通笔记本即可运行,因为所有 LLM 调用均通过外部 API 完成。conda 环境配置文件(environment.yml)也提供了,方便 conda 用户快速部署。
Web UI 需要手动构建前端:
cd web && npm install && npm run dev
整体部署难度低,适合有一定 Python 基础的分析师。
1. 依赖外部 LLM API。 核心功能完全依赖 Groq/OpenAI 等服务商,API Key 必须自行申请。如果网络不稳定或 API 配额用尽,功能直接瘫痪。离线场景完全不可用。
2. 自然语言解读仅支持英文。 当前 PlotExplainer 生成的是英文解释,对中文用户不够友好,中文可视化报告场景受限。
3. 可视化图表类型的覆盖还不够全面。 热力图、地理图、网络图等复杂图表类型支持有限。
4. 尚处于 Alpha 阶段(Development Status::3 - Alpha)。 API 尚未稳定,大版本升级可能存在破坏性变更。
PlotSense 代表的趋势是 AI + 数据分析的深度融合。传统 BI 工具需要用户手动选择图表类型,而 PlotSense 这类工具通过 LLM 理解数据语义后,让图表推荐变得自动化。这是一个正在快速增长的细分领域——除了 PlotSense,还有腾讯的 SWE-agent 系列、阿里 Data-Juicer 等类似工具在探索 AI 辅助数据分析的可能性。
从增长数据看,PlotSense 获得了 356 Stars 和 159 Forks,考虑到项目仅发布数月,这个社区接受度相当可观。项目有完整的文档体系(技术路线图、架构文档)以及活跃的 Discord 社区,整体质量在同类型项目中处于中上水平。
分析基于 GitHub 最新仓库数据(stars: 356, forks: 159)。报告生成时间:2026-06-28。