mcpField
M
matplotlib

matplotlib

github.com/xenodium数据与数据库14844 次安装14 周前更新
代码仓库

关于 matplotlib

matplotlib 是一项使用 matplotlib 绘制近期交互上下文中数据的 Agent 技能。它生成透明背景的 PNG,并以 Markdown 图片内嵌显示,同时使用 Emacs 前景色设置图表样式。

主要功能

  1. 01从上下文提取可绘图数据
  2. 02使用 matplotlib 创建图表
  3. 03生成透明背景图像
  4. 04采用 Emacs 前景色设置样式
  5. 05输出内嵌 Markdown 图片

适用场景

  1. 01可视化对话中提到的数据
  2. 02创建可内嵌显示的图表
  3. 03使图表样式匹配 Emacs 主题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/xenodium/emacs-skills --skill matplotlib

安装后在 Claude Code 中输入/matplotlib确认已加载。

详细介绍

使用 matplotlib 绘制数据

使用 matplotlib 绘制最近交互上下文中的数据。生成透明背景的 PNG 图片,并将其作为 Markdown 图片输出,以便内嵌显示。

如何绘图

  1. 从当前上下文中提取或推导可绘制的数据。
  2. 如果尚未在本次会话之前的绘图中获知 Emacs 前景色,请查询:
    emacsclient --eval '
    (face-foreground (quote default))'
    
    这会返回类似 "#eeffff" 的十六进制颜色。后续所有绘图都重复使用此颜色。
  3. 使用该颜色编写 Python 脚本并保存到临时文件。
  4. 使用 uv run --with matplotlib 运行脚本。
  5. 将结果作为独占一行的 Markdown 图片输出:
    ![description](/tmp/agent-plot-XXXX.png)
    
uv run --with matplotlib /tmp/agent-plot-XXXX.py

Python 脚本模板

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 6))
fig.patch.set_alpha(0)
ax.set_facecolor('none')

FG = "#eeffff"  # from emacsclient query
ax.spines['bottom'].set_color(FG)
ax.spines['left'].set_color(FG)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.tick_params(colors=FG)
ax.xaxis.label.set_color(FG)
ax.yaxis.label.set_color(FG)
ax.title.set_color(FG)

# ... plot commands using the data ...

plt.tight_layout()
plt.savefig("/tmp/agent-plot-XXXX.png", dpi=150, transparent=True)

规则

  • 每次会话只查询一次 Emacs 前景色,后续所有绘图都重复使用该颜色。仅当尚未获知该颜色时才再次查询。
  • 透明背景始终使用 fig.patch.set_alpha(0) 和 ax.set_facecolor('none')。
  • 在 savefig 中始终使用 transparent=True。
  • 文件名始终包含时间戳(例如 /tmp/agent-plot-$(date +%s).png)。不要使用 agent-plot-lorenz.png 这类描述性名称。
  • 始终使用 uv run --with matplotlib 运行脚本。不要使用 pip install。
  • 脚本成功运行后,将 Markdown 图片(![description](path))作为独占一行输出。
  • 根据数据选择合适的图表类型(折线图、柱状图、散点图、直方图、饼图、热力图等)。
  • 在有助于清晰表达时添加标题、坐标轴标签和图例。
  • 图例样式应与主题匹配:深色背景使用 ax.legend(facecolor='#1a1a2e', edgecolor=FG, labelcolor=FG)。
  • 使用 ax.grid(True, alpha=0.2, color=FG) 绘制淡雅的网格线。
  • 隐藏上边框和右边框,使图表更简洁。
  • 如果最近的上下文中没有可绘制的数据,请告知用户。

评论

支持 Markdown