mcpField
G
gnuplot

gnuplot

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

关于 gnuplot

gnuplot 是一项 Agent 技能,可将近期交互上下文中的数据绘制成图,并以内嵌 PNG 呈现。它指导 Agent 准备脚本、运行 gnuplot 并格式化图像输出。

主要功能

  1. 01提取上下文中的可绘图数据
  2. 02生成透明背景 PNG 图表
  3. 03编写并运行 gnuplot 脚本
  4. 04以 Markdown 图片内嵌输出

适用场景

  1. 01绘制对话中的数据
  2. 02生成透明背景图表
  3. 03以内嵌方式展示绘图结果

安装

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

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

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

详细介绍

使用 gnuplot 绘制数据

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

绘图方法

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

Gnuplot 脚本模板

set terminal pngcairo transparent enhanced size 800,500
set output "/tmp/agent-plot-XXXX.png"

FG = "#eeffff"  # from emacsclient query
set border lc rgb FG
set key textcolor rgb FG noopaque nobox  # transparent: Emacs bg shows through, FG text stays legible
set xlabel textcolor rgb FG
set ylabel textcolor rgb FG
set title textcolor rgb FG
set xtics textcolor rgb FG
set ytics textcolor rgb FG

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

规则

  • 每个会话只查询一次 Emacs 前景色,后续所有绘图都重复使用该颜色。仅当尚未获知颜色时才再次查询。
  • 始终使用 pngcairo transparent 终端,以获得透明背景。
  • 文件名中始终包含时间戳(例如 /tmp/agent-plot-$(date +%s).png)。切勿使用 agent-plot-lorenz.png 这类描述性名称。
  • 在适用时使用内嵌数据($DATA << EOD ... EOD)。对于大型数据集,请写入单独的数据文件。
  • gnuplot 成功运行后,将 Markdown 图片(![description](path))作为独占一行输出。
  • 根据数据选择合适的绘图类型(折线图、条形图、直方图、散点图等)。
  • 在有助于理解时添加标题、坐标轴标签和图例。
  • 保持图例透明(noopaque,无边框),以便显示 Emacs 背景,并让前景色文本保持清晰可读。切勿将图例设为不透明:在透明终端上,这会用不透明(通常为白色)的背景填充图例框,遮住浅色前景文本。如果图例会与密集或填充的数据重叠,请将其移至空白角落,或使用 set key outside,而不是设为不透明。
  • 保持绘图填充为半透明(例如 fs transparent solid 0.15),以便其上方的图例或标签在 Emacs 背景上仍清晰可读。
  • 在需要使用下标或上标时,使用 enhanced 文本模式。
  • 如果最近的上下文中没有可绘图的数据,请告知用户。

评论

支持 Markdown