mcpField
M
matplotlib

matplotlib

github.com/xenodiumデータ・データベース14844 回インストール14 週間前に更新
リポジトリ

matplotlib について

matplotlibは、直近のやり取りに含まれるデータをmatplotlibで描画するエージェントスキルです。透明なPNGを生成してMarkdown画像として表示し、Emacsの前景色をグラフのスタイルに使います。

主な機能

  1. 01コンテキストから描画可能なデータを抽出
  2. 02matplotlibによるグラフ作成
  3. 03透明背景の画像生成
  4. 04Emacsの前景色をスタイルに使用
  5. 05Markdown画像として出力

活用シーン

  1. 01会話内のデータを可視化
  2. 02インライン表示用のグラフ作成
  3. 03Emacsテーマに合わせたグラフの装飾

インストール

コマンドをコピーしてターミナルで実行します。

$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" のような16進カラーコードが返されます。以降のすべてのプロットで同じ色を再利用します。
  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) を使用します。
  • 見た目をすっきりさせるため、上と右のスパインを非表示にします。
  • 直近のコンテキストにプロット可能なデータがない場合は、その旨をユーザーに伝えます。

コメント