Plotnine MCP服务器
一个模型上下文协议(MCP)服务器,通过plotnine将ggplot2的图形语法引入Python,通过自然语言实现AI驱动的数据可视化。
使用plotnine对R心爱的ggplot2的Python实现,通过聊天创建出版物质量的统计图形。这个模块化的MCP服务器允许Claude和其他AI助手通过图形语法范式组合层来生成高度可定制的可视化。
特性
岩心可视化
- 🎨 多层绘图:将多个几何图形组合在一个图中(散点+趋势线、箱线图+抖动等)
- 图形语法:使用美学、几何、比例、主题、面和坐标来创作情节
- 20+几何类型:点、线、条形图、直方图、箱线图、小提琴等
- 多个数据源:从文件(CSV、JSON、Parquet、Excel)、URL或内联JSON加载数据
- 多种输出格式:PNG、PDF、SVG,具有可配置的尺寸和DPI
智能功能(新增!)
- 📋 9绘图模板:常见模式的预配置模板(时间序列、趋势分散、分布比较等)
- 🤖 AI模板建议:分析数据并推荐适当的绘图类型
- 🎨 21个调色板:色盲安全、科学、分类、公司、顺序和发散调色板
- 📊 数据预览:在绘制综合摘要之前检查数据
- 🎯 智能错误消息:模糊匹配建议更正列名、地理类型和主题中的拼写错误
- 💾 配置导出/导入:将绘图配置保存为JSON文件并重复使用
数据操作(新增!)
- 🔄 12数据转换:过滤器、group_summarize、排序、选择、重命名、变异、drop_na、fill_na、采样、唯一、滚动、枢轴
- ⚡ 批处理:在一次操作中创建多个图
- 🔗 连锁转型:按顺序应用多个转换
主题和定制
- 灵活的主题:内置主题,具有广泛的自定义选项
- 统计转换:添加平滑、合并、密度估计和摘要
- 镶嵌面:使用换行或网格布局按分类变量拆分图
安装
1.克隆或下载此存储库
cd plotnine-mcp2.安装依赖项
使用pip:
pip install -e .要获得完整功能(拼花地板和Excel支持):
pip install -e ".[full]"3.配置您的MCP客户端
查找安装路径
首先,找出 plotnine-mcp 已安装命令:
which plotnine-mcp这将显示类似的内容 /path/to/python/bin/plotnine-mcp。在下面的配置中使用此完整路径。
克劳德桌面
将服务器添加到Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
推荐(使用入口点):
{
"mcpServers": {
"plotnine": {
"command": "/path/to/your/python/bin/plotnine-mcp",
"args": []
}
}
}替代方案(使用python-m):
{
"mcpServers": {
"plotnine": {
"command": "python",
"args": ["-m", "plotnine_mcp.server"]
}
}
}如果在虚拟环境中安装,请替换为完整路径:
{
"mcpServers": {
"plotnine": {
"command": "/path/to/venv/bin/plotnine-mcp",
"args": []
}
}
}光标
推荐方法: 通过配置 .cursor/mcp.json 在您的项目中:
{
"mcpServers": {
"plotnine": {
"command": "/path/to/your/python/bin/plotnine-mcp",
"args": []
}
}
}备选方案: 通过打开命令选项板添加到光标全局设置(Cmd/Ctrl+Shift+P)并搜索“首选项:打开用户设置(JSON)”:
{
"mcp.servers": {
"plotnine": {
"command": "/path/to/your/python/bin/plotnine-mcp",
"args": []
}
}
}使用python-m替代:
{
"mcpServers": {
"plotnine": {
"command": "python",
"args": ["-m", "plotnine_mcp.server"]
}
}
}VSCode(带Cline/Roo-Cline)
添加到VSCode MCP设置文件中:
macOS/Linux: ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
视窗: %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json
{
"mcpServers": {
"plotnine": {
"command": "/path/to/your/python/bin/plotnine-mcp",
"args": []
}
}
}对于VSCode中的其他MCP客户端,请参阅其特定文档以了解MCP服务器配置。
4.重新启动应用程序
重新启动Claude Desktop、Cursor或VSCode以使更改生效。plotnine MCP服务器现在应该可用了!
用法
基础示例
Create a scatter plot from data.csv with x=age and y=height高级示例
Create a line plot from sales_data.csv showing:
- x: date, y: revenue, color by region
- Use a minimal theme with figure size 12x6
- Add a smooth trend line
- Facet by product category
- Label the plot "Q4 Sales Performance"
- Save as PDF可用工具(共11个)
核心工具
create_plot
创建具有完全自定义功能的plotnine可视化。
所需参数:
data_source:数据源配置aes:美学映射(列名)geom或geoms:几何规格
可选参数:
scales:标尺配置数组theme:主题配置facets:分面配置labels:绘图标签(标题、x、y、标题、副标题)coords:坐标系配置stats:统计转换transforms:数据转换(新增!)output:输出配置(格式、大小、DPI、目录)
list_geom_types
列出所有20多种可用的几何图形类型及其说明。
数据工具(新增!)
预览数据
在创建绘图之前预览和检查数据。返回数据集形状、列类型、第一行、统计信息和缺失值。
参数:
data_source:数据源配置rows:要预览的行数(默认值:5)
模板工具(新增!)
list_plot_templates
列出所有9个可用的绘图模板及其说明:
- 时间序列
- 分散趋势
- 分布_比较
- 类别_细分
- 相关地图
- boxplot比较
- 多线
- 密度直方图
- 之前_之后
create_plot_from_template
使用预定义样板创建绘图。只需提供数据和美学;模板处理其余部分。
参数:
template_name:模板的名称data_source:数据源配置aes:美学映射labels:可选标签output:可选输出配置overrides:模板设置的可选替代
suggest_plot_templates
分析您的数据,并根据列类型和可选目标获得基于AI的绘图建议。
参数:
data_source:要分析的数据源goal:可选目标(例如,“比较分布”、“显示趋势”)
样式工具(新增!)
list_themes
列出所有可用的打印样式主题,包括描述和自定义选项。
列表_颜色_字体
列出6个类别的21个调色板:
- 色盲安全(3个调色板)
- 科学(4个调色板)
- 分类(4个调色板)
- 公司(3个调色板)
- 顺序(4个调色板)
- 多样化(3个调色板)
参数:
category:可选类别筛选器
配置工具
export_plot_config
将绘图配置导出为JSON以供重用和共享。
参数:
config:要导出的绘图配置filename:输出文件名directory:输出目录(默认:'./plot_configs')
import_plot_config
导入并使用带有可选替代的已保存打印配置。
参数:
config_path:保存配置的路径overrides:可选参数覆盖
批处理工具(新!)
batch_create_plots
在一次操作中创建多个图。非常适合为所有列生成图表、成对比较或同一数据的不同可视化。
参数:
plots:绘图配置数组
几何体类型
- 点:散点图点
- 线:连接点的线图
- 酒吧:条形图(默认计数)
- 列:柱状图(身份统计)
- 直方图:连续数据柱状图
- 箱线图:方框图和须状图
- 小提琴:发行版小提琴图
- 区域:线下填充区域
- 密度:核密度图
- 平滑:平滑的条件意味着
- 抖动:抖动点(减少过度绘制)
- 瓷砖:热图/瓷砖图
- 文本:文本注释
- 误差线:错误栏
- hline/vline/abline:参考线
- 路径:按顺序连接点的路径
- 多边形:填充多边形
- 丝带:间隔带
示例
简单散点图
{
"data_source": {
"type": "file",
"path": "./data/iris.csv"
},
"aes": {
"x": "sepal_length",
"y": "sepal_width",
"color": "species"
},
"geom": {
"type": "point",
"params": {"size": 3, "alpha": 0.7}
}
}带主题的线条图
{
"data_source": {
"type": "url",
"path": "https://example.com/timeseries.csv"
},
"aes": {
"x": "date",
"y": "value",
"color": "category"
},
"geom": {
"type": "line",
"params": {"size": 1.5}
},
"scales": [
{
"aesthetic": "x",
"type": "datetime",
"params": {"date_breaks": "1 month"}
}
],
"theme": {
"base": "minimal",
"customizations": {
"figure_size": [12, 6],
"legend_position": "bottom"
}
},
"labels": {
"title": "Time Series Analysis",
"x": "Date",
"y": "Value"
}
}分面Boxplot
{
"data_source": {
"type": "inline",
"data": [
{"group": "A", "category": "X", "value": 10},
{"group": "A", "category": "Y", "value": 15},
{"group": "B", "category": "X", "value": 12}
]
},
"aes": {
"x": "group",
"y": "value",
"fill": "group"
},
"geom": {
"type": "boxplot"
},
"facets": {
"type": "wrap",
"facets": "~ category"
},
"theme": {
"base": "bw"
}
}多层图:散点+平滑趋势
新 将多个几何图形分层以创建复杂的可视化:
{
"data_source": {
"type": "file",
"path": "./data/measurements.csv"
},
"aes": {
"x": "time",
"y": "value",
"color": "sensor"
},
"geoms": [
{
"type": "point",
"params": {"size": 2, "alpha": 0.6}
},
{
"type": "smooth",
"params": {"method": "lm", "se": false}
}
],
"theme": {
"base": "minimal",
"customizations": {"figure_size": [12, 6]}
},
"labels": {
"title": "Sensor Readings with Trend Lines",
"x": "Time",
"y": "Measurement"
}
}带抖动点的箱线图
显示分布摘要和单个数据点:
{
"data_source": {
"type": "file",
"path": "./data/experiment.csv"
},
"aes": {
"x": "treatment",
"y": "response",
"fill": "treatment"
},
"geoms": [
{
"type": "boxplot",
"params": {"alpha": 0.7}
},
{
"type": "jitter",
"params": {"width": 0.2, "alpha": 0.5, "size": 1}
}
],
"theme": {
"base": "bw"
},
"labels": {
"title": "Treatment Effects with Individual Observations"
}
}聊天示例
您可以通过自然语言创建绘图:
“从users.csv创建'年龄'列的直方图”
“绘制一个散点图,用平滑的趋势线显示价格与尺寸,按类别着色”
使用深色主题,在sales.cv中绘制一个折线图,x轴为日期,y轴为收入,按地区分面
“创建一个小提琴图,比较不同学校的考试成绩分布”
“制作一个方框图,上面覆盖着各个点,按季节显示温度”
为每个类别创建一个带有线性趋势线的散点图,显示学习时间与考试成绩之间的关系
使用新工具
“打印前预览sales.cv中的数据”
“有哪些主题可用?”
“显示所有可用的绘图模板”
“为我的数据建议合适的绘图类型”
“使用模板创建时间序列图”
“列出科学类别中的调色板”
“导出此绘图配置,以便以后重复使用”
“从my_config.json加载plot配置,并将其用于其他数据集”
“根据保存的配置创建绘图,但将主题更改为最小”
“为数据集中的每个类别创建图表” (批量处理)
筛选数据以仅显示活动用户,然后创建直方图 (数据转换)
新示例
使用模板
使用模板创建带有趋势线的散点图:
"Use the scatter_with_trend template to plot height vs weight from my data"这将自动创建具有以下内容的绘图:
- 散点(带透明度)
- 线性回归线
- 置信区间
- 最小主题
使用调色板
"Create a bar chart colored using the colorblind-safe Okabe-Ito palette"数据转换
"Filter sales data to show only Q4, group by region, sum the revenue, and create a bar chart"这将在打印之前应用转换:
- 筛选器:
"quarter == 'Q4'" - 分组和汇总:按地区,收入总额
- 图:结果柱状图
批处理
"Create histogram plots for all numeric columns in my dataset"配置选项
主题
可用基本主题:
gray(默认)bw非黑即白的minimalclassicdarklightvoid
比例类型
- 位置的:连续、离散、log10、sqrt、datetime
- 颜色/填充:梯度、离散、酿造器
坐标系
cartesian(默认)flip(交换x和y)fixed(固定纵横比)trans(转换坐标)
输出
默认情况下,绘图保存到 ./output 将目录转换为300 DPI的PNG文件。您可以自定义:
- 格式:png、pdf、svg
- 文件名:自定义文件名(默认情况下自动生成)
- 大小:尺寸单位为英寸
- 每英寸点数:光栅格式的分辨率
- 目录:输出目录路径
故障排除
“找不到模块”错误
确保您已安装该软件包:
pip install -e .拼花地板/Excel支持
安装可选依赖项:
pip install -e ".[full]"“找不到数据文件”
使用绝对路径或相对于Claude Desktop运行位置的路径。
绘图未渲染
检查:
- 中的列名
aes匹配您的数据 - 数据类型适用于几何图形
- 提供所需的美学(例如。,
x和y对于大多数geoms)
发展
运行测试
pytest代码格式化
black src/
ruff check src/许可证
麻省理工学院
贡献
欢迎投稿!请打开问题或提交拉取请求。
