返回市场
画九-MCP

画九-MCP

作者:Fervoyush2 星标更新:2025-11-07

项目介绍

Plotnine MCP Server

一个通过plotnine实现R中备受喜爱的ggplot2图形语法的Model Context Protocol (MCP)服务器,使AI能够通过自然语言生成高质量的数据可视化。

通过聊天创建出版级别的统计图形,利用plotnine对R中广受喜爱的ggplot2的Python实现。这个模块化的MCP服务器允许Claude和其他AI助手通过图形语法范式组合图层来生成高度可定制的可视化效果。

<a href="https://glama.ai/mcp/servers/@Fervoyush/plotnine-mcp"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=875332398,1428851524&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Plotnine Server MCP server" /> </a>

功能

核心可视化

  • 🎨 多层图表:在单个图表中结合多种几何图形(散点图+趋势线,箱形图+抖动等)
  • 图形语法:使用美学、几何图形、尺度、主题、分面和坐标系来组合图表
  • 20多种几何类型:点、线、条形图、直方图、箱形图、小提琴图等
  • 多种数据源:从文件(CSV、JSON、Parquet、Excel)、URL或内联JSON加载数据
  • 多种输出格式:PNG、PDF、SVG,具有可配置的尺寸和DPI

智能功能(新!)

  • 📋 9种图表模板:预配置的常见模式模板(时间序列、带有趋势的散点图、分布比较等)
  • 🤖 AI模板建议:分析您的数据并推荐适当的图表类型
  • 🎨 21种颜色调色板:色盲安全、科学、分类、企业、顺序和发散调色板
  • 📊 数据预览:在绘图前检查数据,提供全面的总结
  • 🎯 智能错误消息:模糊匹配建议列名、几何类型和主题中的拼写错误
  • 💾 配置导出/导入:保存并重复使用绘图配置为JSON文件

数据操作(新!)

  • 🔄 12种数据转换:过滤、分组汇总、排序、选择、重命名、变异、删除空值、填充空值、采样、唯一值、滚动、透视
  • ⚡ 批量处理:一次操作创建多个图表
  • 🔗 链式转换:按顺序应用多种转换

主题与自定义

  • 灵活的主题:内置主题具有广泛的自定义选项
  • 统计变换:添加平滑、分箱、密度估计和汇总
  • 分面:使用包装或网格布局按分类变量拆分图表

安装

1. 克隆或下载此仓库

cd plotnine-mcp

2. 安装依赖项

使用pip:

pip install -e .

为了完全功能(支持Parquet和Excel):

pip install -e ".[full]"

3. 配置您的MCP客户端

Claude Desktop

将服务器添加到您的Claude Desktop配置文件中:

macOS~/Library/Application Support/Claude/claude_desktop_config.json

Windows:%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "plotnine": {
      "command": "python",
      "args": ["-m", "plotnine_mcp.server"]
    }
  }
}

如果您安装在一个虚拟环境中,请使用python的完整路径:

{
  "mcpServers": {
    "plotnine": {
      "command": "/path/to/venv/bin/python",
      "args": ["-m", "plotnine_mcp.server"]
    }
  }
}

Cursor

通过打开命令面板(Cmd/Ctrl+Shift+P)并搜索“Preferences: Open User Settings (JSON)”来添加到Cursor设置中。添加:

{
  "mcp.servers": {
    "plotnine": {
      "command": "python",
      "args": ["-m", "plotnine_mcp.server"]
    }
  }
}

或者在项目中通过.cursor/mcp.json配置:

{
  "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

Windows:%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json

{
  "mcpServers": {
    "plotnine": {
      "command": "python",
      "args": ["-m", "plotnine_mcp.server"]
    }
  }
}

对于VSCode中的其他MCP客户端,请查阅其特定文档以了解MCP服务器配置。

4. 重启您的应用程序

重启Claude Desktop、Cursor或VSCode以使更改生效。现在应该可以使用plotnine MCP服务器了!

使用

基本示例

从data.csv创建一个散点图,其中x=年龄,y=身高

高级示例

从sales_data.csv创建一条线图,显示:
- x: 日期,y: 收入,按地区着色
- 使用最小主题,图尺寸为12x6
- 添加平滑趋势线
- 按产品类别分面
- 标题为“Q4销售表现”
- 保存为PDF

可用工具(总计11个)

核心工具

create_plot

创建一个具有完全自定义的plotnine可视化。

必需参数:

  • data_source:数据源配置
  • aes:美学映射(列名)
  • geomgeoms:几何图形规范

可选参数:

  • scales:尺度配置数组
  • theme:主题配置
  • facets:分面配置
  • labels:绘图标签(标题、x、y、注释、副标题)
  • coords:坐标系统配置
  • stats:统计变换
  • transforms:数据变换(新!)
  • output:输出配置(格式、大小、DPI、目录)

list_geom_types

列出所有20多种可用的几何类型及其描述。

数据工具(新!)

preview_data

预览和检查数据,以便在创建图表之前进行检查。返回数据集形状、列类型、前几行、统计数据和缺失值。

参数:

  • data_source:数据源配置
  • rows:要预览的行数(默认:5)

模板工具(新!)

list_plot_templates

列出所有9种可用的图表模板及其描述:

  • 时间序列
  • 带有趋势的散点图
  • 分布比较
  • 类别分解
  • 相关性热图
  • 箱形图比较
  • 多条线
  • 带密度的直方图
  • 前后对比

create_plot_from_template

使用预定义的模板创建图表。只需提供数据和美学;模板会处理其余部分。

参数:

  • template_name:模板名称
  • data_source:数据源配置
  • aes:美学映射
  • labels:可选标签
  • output:可选输出配置
  • overrides:可选模板设置覆盖

suggest_plot_templates

分析您的数据,并根据列类型和可选目标获得AI驱动的图表推荐。

参数:

  • data_source:要分析的数据源
  • goal:可选目标(例如,“比较分布”,“展示趋势”)

样式工具(新!)

list_themes

列出所有可用于绘图样式的主题及其描述和自定义选项。

list_color_palettes

列出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:绘图配置数组

几何类型

  • point:散点图点
  • line:连接点的折线图
  • bar:条形图(默认计数)
  • col:柱状图(身份统计)
  • histogram:连续数据的直方图
  • boxplot:箱须图
  • violin:分布的小提琴图
  • area:折线下的填充区域
  • density:核密度图
  • smooth:平滑条件均值
  • jitter:抖动点(减少过度绘制)
  • tile:热图/瓷砖图
  • text:文本注释
  • errorbar:误差棒
  • hline/vline/abline:参考线
  • path:按顺序连接点的路径
  • polygon:填充多边形
  • ribbon:区间带

示例

简单散点图

{
  "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": "时间序列分析",
    "x": "日期",
    "y": "数值"
  }
}

分面箱形图

{
  "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": "传感器读数及趋势线",
    "x": "时间",
    "y": "测量值"
  }
}

带抖动点的箱形图

展示分布摘要和个别数据点:

{
  "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": "治疗效果及个别观察"
  }
}

聊天示例

您可以通过自然语言创建图表:

“创建users.csv中‘年龄’列的直方图”

“制作一个散点图,显示价格与尺寸的关系,按类别着色,并带有平滑趋势线”

“从sales.csv创建一条线图,x轴为日期,y轴为收入,按地区分面,使用深色主题”

“创建一个比较不同学校测试分数分布的小提琴图”

“制作一个显示季节温度的箱形图,并叠加个别数据点”

“创建一个散点图,每个类别都有线性趋势线,展示学习时间和测试成绩之间的关系”

使用新工具

“预览sales.csv中的数据,然后再绘图”

“有哪些主题可用?”

“显示所有可用的图表模板”

“为我的数据推荐合适的图表类型”

“使用模板创建时间序列图”

“列出科学类别的所有颜色调色板”

“导出此绘图配置,以便以后重复使用”

“从my_config.json加载绘图配置,并用于不同的数据集”

“从保存的配置创建图表,但将主题更改为最小”

“为数据集中的每个类别创建图表”(批量处理)

“过滤数据,仅显示活跃用户,然后创建直方图”(数据转换)

新示例

使用模板

使用带有趋势线的散点图模板创建图表:

“使用scatter_with_trend模板绘制我的数据中的身高与体重”

这将自动创建一个具有以下内容的图表:

  • 散点图点(透明度)
  • 线性回归线
  • 置信区间
  • 最小主题

使用颜色调色板

“创建一个使用色盲安全的Okabe-Ito调色板着色的条形图”

数据转换

“过滤销售数据,仅显示第四季度,按地区分组,汇总收入,然后创建条形图”

这将在绘图前应用转换:

  1. 过滤:“季度 == ‘Q4’”
  2. 分组及汇总:按地区汇总收入
  3. 绘制:结果的条形图

批量处理

“为我数据集中的所有数值列创建直方图”

配置选项

主题

可用的基础主题:

  • gray(默认)
  • bw(黑白)
  • minimal
  • classic
  • dark
  • light
  • void

尺度类型

  • 位置:连续、离散、log10、sqrt、datetime
  • 颜色/填充:渐变、离散、brewer

坐标系统

  • cartesian(默认)
  • flip(交换x和y)
  • fixed(固定纵横比)
  • trans(转换坐标)

输出

默认情况下,图表保存到./output目录,作为300 DPI的PNG文件。您可以自定义:

  • 格式:png、pdf、svg
  • 文件名:自定义文件名(默认自动生成)
  • 宽度/高度:英寸单位的尺寸
  • dpi:光栅格式的分辨率
  • 目录:输出目录路径

故障排除

“模块未找到”错误

确保已安装该包:

pip install -e .

Parquet/Excel支持

安装可选依赖项:

pip install -e ".[full]"

“无法找到数据文件”

使用绝对路径或相对于Claude Desktop运行位置的相对路径。

图表未渲染

检查:

  • aes中的列名是否与您的数据匹配
  • 数据类型是否适合几何图形
  • 提供了所需的美学(例如,大多数几何图形需要