SuperAPI AI 工具集

matplotlib

数据与分析

查看项目

更新于 10-16 02:42

技能介绍

用途

matplotlib 技能用于在 Emacs 中通过用户调用 "/matplotlib" 时,从当前交互上下文提取或推导可绘制的数据,并用 matplotlib 生成图表。最终以 Markdown 图片语法输出 PNG 图片,使其可以内联渲染。

主要能力

  • 从最近的交互上下文中提取或推导可绘制的数据。

  • 使用 matplotlib 生成 PNG 图片,背景透明。

  • 将结果以 Markdown 图片形式输出在单独一行,例如:

    description

  • 根据数据选择合适的图表类型(折线、柱状、散点、直方图、饼图、热力图等)。

  • 在有助于清晰表达时,添加标题、坐标轴标签和图例。

  • 可通过参数控制图例、网格和边框样式,例如:

    • 图例:ax.legend(facecolor='#1a1a2e', edgecolor=FG, labelcolor=FG)
    • 网格:ax.grid(True, alpha=0.2, color=FG)
    • 隐藏顶部和右侧边框,使图表更简洁。

使用方式

  1. 如果本次会话中尚未从前一次绘图获得 Emacs 前景色,则先查询:

    emacsclient --eval '
    (face-foreground (quote default))'
    

    返回类似 "#eeffff" 的十六进制颜色。之后所有绘图复用该颜色。

  2. 使用该颜色将 Python 脚本写入临时文件。

  3. 使用以下命令运行脚本:

    uv run --with matplotlib /tmp/agent-plot-XXXX.py
    
  4. 脚本运行成功后,在单独一行输出 Markdown 图片:

    ![description](/tmp/agent-plot-XXXX.png)
    

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 环境中快速将当前上下文中的数据可视化的场景,尤其是需要透明背景、能与编辑器主题颜色协调、并可内联显示的图表输出。

限制与规则

  • 每次会话只查询一次 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 图片。
  • 如果最近的上下文中没有可绘制的数据,应告知用户。