mcpField
M
matlab-build-chart

matlab-build-chart

github.com/matlabデータ・データベース1.2k70 回インストール1 日前に更新
リポジトリ

matlab-build-chart について

MATLABユーザー向けのチャート作成スキルです。通常のFigure、Live Script、uifigureアプリに対応し、操作、アニメーション、複数パネル、描画性能も扱います。

主な機能

  1. 01多様なチャートの作成
  2. 02軸と注釈の設定
  3. 03操作機能とデータヒントの追加
  4. 04アニメーションとストリーミング更新
  5. 05軸の配置とチャートのエクスポート

活用シーン

  1. 01データ比較や時間変化の表示
  2. 02プロットへの注釈とデータヒントの追加
  3. 03アプリ向けの操作可能なチャート作成
  4. 04複数パネルの配置と更新性能の調整

インストール

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

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-build-chart

インストール後、Claude Code で/matlab-build-chartを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
references/
animation.md
annotations.md
axes-config.md
chart-palettes.md
data-tips.md
interactive-plots.md
multiple-axes.md
performance.md
plot-types.md

詳細

MATLAB Chart Builder

スタンドアロンの Figure、Live Script、または uifigure アプリで、MATLAB のチャートやプロットを作成、カスタマイズし、操作します。

このスキルを使用する場面

次の場合にこのスキルを使用します。

  • あらゆるコンテキストでデータをプロットする場合(line、scatter、bar、histogram、heatmap、surface、polar、geo、volume)
  • Axes を設定する場合(ラベル、範囲、目盛り、凡例、フォント、エクスポート)
  • 注釈を追加する場合(xline、yline、xregion、text)
  • データヒントを追加またはカスタマイズする場合
  • インタラクティブなプロットを作成する場合(クリック、ホバー、ドラッグのコールバック)
  • チャートのデータをアニメーション化またはストリーミングする場合
  • tiledlayout/nexttile で複数の axes を配置する場合
  • チャートの描画パフォーマンスを最適化する場合
  • 論文やレポート向けに Figure をエクスポートする場合
  • ユーザーが特定のチャートタイプを指定せずに「データを可視化したい」と言った場合

このスキルを使用しない場面

  • 完全なアプリを構築する場合(matlab-build-app を使用します。このスキルはチャート関連のサブステップで呼び出されます)
  • ダークモード、ブランドカラー、またはカスタムカラーテーマを適用する場合(matlab-apply-theme を使用します)
  • Simulink のスコープまたは Simscape のプロットを扱う場合
  • ドラッグ&ドロップ GUI で App Designer のチャートを作成する場合

ワークフロー

User request arrives
        |
        +-- FAST PATH (most requests)
        |   Chart type named OR unambiguous single-axes plot
        |   AND no interactivity / animation / multi-panel / performance concern
        |       |
        |       v
        |   Infer rendering context (default: standalone figure)
        |   Read relevant references --> Build directly
        |
        +-- PLAN PATH (complex or ambiguous)
                |
                +-- Ambiguous intent (no chart type named, unclear data question)
                |       --> Identify visualization intent (see Intent Taxonomy)
                |
                +-- Rendering context unclear AND it matters
                |       --> Ask: standalone figure, Live Script, or uifigure app?
                |
                v
            Present inline plan for approval
                |
                v
            User confirms --> Read references --> Build
ファストパストリガー(計画を立てずに直接作成)

以下のすべてに該当する必要があります。

  • チャートタイプが指定されている、または意図からタイプを一意に判断できる
  • Axes が 1 つ(タイル表示やマルチパネルレイアウトではない)
  • カスタムのインタラクティブ機能がない(ユーザー指定のコールバックがない)
  • アニメーションやストリーミングがない
  • 明示的なパフォーマンス制約がない
  • 描画コンテキストが明確、またはデフォルトのスタンドアロン Figure である
計画パストリガー(最初に計画を提示)

以下のいずれかに該当すると、計画パスになります。

  • マルチパネルまたはタイル表示の Figure
  • カスタムのインタラクティブ機能(クリック、ホバー、ドラッグのコールバック)
  • アニメーションまたはデータのストリーミング
  • パフォーマンスが重要(大規模なデータセット、リアルタイム更新)
  • パレットやテーマの調整が必要な、ブランドに合わせたデザイン済みの Figure
  • 曖昧な「データを可視化したい」という依頼で、タイプや意図が不明確
  • 1 つの Figure に複数の可視化意図がある

描画コンテキスト

次の 3 つのコンテキストによって、適用する制約セットが決まります。

コンテキスト制約推定方法
スタンドアロンの Figure共通ルールのみデフォルト。依頼に figure/axes が含まれる場合
Live Script共通ルールのみユーザーが Live Script、.mlx、プレーンテキストの Live Code に言及した場合
uifigure アプリ共通ルールと uifigure ルールユーザーが uifigure に言及した場合。app-builder のサブステップとして呼び出される場合

コンテキストが明示されておらず、推定もできない場合は、スタンドアロンの Figure とします。違いが重要な場合に限り、質問してください(例:heatmap の親オブジェクトがコンテキストによって異なる場合)。

可視化意図の分類

ユーザーが特定のチャートタイプまたは関数を指定していない場合にのみ適用します。「scatter」や「heatmap」と指定されている場合は、意図の選択を省略して直接作成します。

伝達目的の意図
意図データに関する問い推奨関数
比較項目間で値を比較するとどうなりますか?bar、barh、bar3、bar3h、pareto、stem、stairs、loglog、semilogx、semilogy
傾向/時系列値は時間とともにどのように変化しますか?plot、area、stackedplot、stairs、stem、fplot、fplot3
分布データはどのように分布していますか?histogram、histogram2、boxchart、violinplot、raincloudplot、swarmchart、swarmchart3、scatterhistogram、binscatter、polarhistogram
関係変数同士にはどのような関係がありますか?scatter、scatter3、bubblechart、bubblechart3、plotmatrix、parallelplot、binscatter、spy、fimplicit
構成全体の各部分はどうなっていますか?piechart、donutchart、積み上げ bar、積み上げ area、wordcloud、bubblecloud
データ領域のインテント
インテント発生条件推奨される関数
地理空間地理座標geoplot、geoscatter、geobubble、geodensityplot
方向/極座標角度、周期、コンパスデータpolarplot、polarscatter、polarhistogram、polarbubblechart、compassplot、fpolarplot
曲面とスカラー場z = f(x,y)、メッシュ、等高線surf、surfc、surfl、mesh、meshc、meshz、ribbon、pcolor、contour、contourf、contour3、fcontour、fsurf、fmesh、fimplicit3、waterfall
ベクトル場と流れ方向を持つベクトルデータquiver、quiver3、feather、streamline、streamslice、streamribbon、streamtube、streamparticles、coneplot
ボリューム可視化3D 格子状ボリュームデータslice、contourslice、coneplot、streamslice、isosurface/isocap ワークフロー
画像と行列行列/グリッドの表示image、imagesc、heatmap、pcolor(フラット)、spy
分類ルール
  • waterfall の落とし穴: MATLAB の waterfall は 3D 曲面プロットであり、金融の累積チャートではありません。「合計への累積」を表すには、bar と非表示のベース系列を使って作成します。
  • f* バリアントは、対応するデータ関数と同じインテントに従います:fplot -> トレンド、fsurf/fmesh/fcontour -> 曲面、fimplicit -> 関係性、fpolarplot -> 方向。
  • アニメーションは複数の領域にまたがる要素であり、インテントではありません。animatedline、comet、comet3 は、どのチャートタイプにも動きを加えます。references/animation.md を参照してください。
  • 複数のインテントに対応する関数: ギャラリーでの分類ではなく、ユーザーがデータについて知りたいことに基づいて分類します。たとえば、相関行列のヒートマップ -> 関係性、件数のヒートマップ -> 比較。
  • コミュニケーション上の意図に基づいて分類し、MATLAB のドキュメントでの分類には従いません。piechart/donutchart は、ドキュメント内の分類にかかわらず構成を表します。

インライン計画テンプレート

計画パスが適用される場合は、承認を得るために次を提示します:

**Chart Plan: [description]**

**Context:** [Standalone figure / Live Script / uifigure app]
**Intent:** [name] -> [chosen function(s)]

**Structure:**
- [Layout description]
- [Key visual elements, annotations, interactions]

**Key decisions:**
- [Performance strategy, if applicable]  [src: references/performance.md SS]
- [Interaction model, if applicable]  [src: references/interactive-plots.md SS]
- [uifigure constraints that apply, if context = uifigure]

**References to use:**
| Reference | Role | Provenance |
|-----------|------|------------|
| `references/file.md` | [what it provides] | [src: references/file.md SS] |

Shall I proceed?

(a)ユーザーが保存用の仕様書を明示的に求めている場合、または(b)既存の計画アーティファクトを使ってアプリを構築するサブステップとして chart-builder が実行されている場合を除き、計画をファイルに書き込まないでください。

重要なルール

すべてのコンテキストに共通
  • すべてのプロット関数には、軸を最初の引数として必ず渡してください:plot(ax, x, y)。plot(x, y) ではありません。
  • データは必ずインプレースで更新してください(p.XData = newX)。ループ内で再プロットしないでください。
  • アニメーションには必ず drawnow limitrate を使用してください。タイトなループ内で単独の drawnow を使用しないでください。
  • 複数の軸には subplot() より tiledlayout/nexttile を優先してください。
  • 出版品質のエクスポートには exportgraphics() を優先してください。
uifigure アプリでの追加制約
  • 必ず uiaxes を使用してください。通常の axes は使用しないでください。
  • exportgraphics() または exportapp() を必ず使用してください。saveas/print はサポートされていません。
  • subplot() は使用しないでください。uifigure ではサポートされていません。
  • annotation() は使用しないでください。代わりに text()、xline()、yline()、xregion()、yregion() を使用してください。
  • ginput() は使用しないでください。プロットオブジェクトの ButtonDownFcn を使用してください。
  • gcf/gca に依存しないでください。uiaxes ではデフォルトで HandleVisibility = 'off' です。

クイックスタート

スタンドアロンの図
fig = figure;
ax = axes(fig);

t = 0:0.01:2*pi;
plot(ax, t, sin(t), 'LineWidth', 1.5);
hold(ax, 'on');
plot(ax, t, cos(t), '--', 'LineWidth', 1.5);
hold(ax, 'off');

title(ax, 'Sine and Cosine');
xlabel(ax, 'Time (s)');
ylabel(ax, 'Amplitude');
legend(ax, 'sin', 'cos');
grid(ax, 'on');
exportgraphics(ax, 'plot.png', 'Resolution', 300);
uifigure アプリ内
fig = uifigure('Name', 'Chart Demo');
gl = uigridlayout(fig, [1 1]);
ax = uiaxes(gl);

plot(ax, t, sin(t), 'LineWidth', 1.5);
% Same API from here — only axes creation differs

ax を取得した後は、すべてのプロット呼び出し(plot、scatter、bar、xline、hold、legend、colororder など)は、コンテキストにかかわらず同じです。

実装チェックリスト

グラフィックス
  • すべてのプロット呼び出しで ax を最初の引数として渡す
  • 複数の系列を追加する前に hold(ax, 'on') を使用する
  • 軸ラベル、タイトル、グリッドを設定する
  • 注釈には xline/yline/text を使用する(annotation() は使用しない — uifigure での要件)
  • インタラクティブなコールバックには、軸ではなくプロットオブジェクトの ButtonDownFcn を使用する(uifigure での要件)
  • アニメーションでは drawnow limitrate を使用し、軸の範囲を事前に設定する
  • エクスポートには exportgraphics() を使用する(uifigure では必須、すべての環境で推奨)
  • 複数の軸には tiledlayout/nexttile を使用する(uifigure では必須、すべての環境で推奨)

トラブルシューティング

(uifigure のみ) と記された問題は、uifigure アプリでプロットする場合にのみ該当します。

問題原因対処方法
アニメーションが遅い/ぎこちないループ内で plot() を使用している、または drawnow をそのまま使用しているデータをその場で更新し、drawnow limitrate を使用します
再プロット後にプロットが消えるデフォルトの NextPlot = 'replacechildren'hold(ax, 'on') を使用するか、データをその場で更新します
gcf/gca が誤ったハンドルを返す (uifigure のみ)uiaxes の HandleVisibility = 'off'常に ax を明示的に渡します
annotation() でエラーが発生する (uifigure のみ)uifigure ではサポートされていませんtext()、xline()、yline() を使用します
ginput() でエラーが発生する (uifigure のみ)uifigure ではサポートされていませんプロットオブジェクトで ButtonDownFcn を使用します
Axes 上でクリックコールバックが実行されない (uifigure のみ)uiaxes では ButtonDownFcn が不安定ですプロットオブジェクトに ButtonDownFcn を設定します
uiaxes でヒートマップを作成できない (uifigure のみ)ヒートマップには figure または panel の親が必要ですheatmap(fig, ...) または heatmap(panel, ...) を使用します
saveas が失敗する (uifigure のみ)uifigure ではサポートされていませんexportgraphics(ax, file) を使用します
subplot() でエラーが発生する (uifigure のみ)uifigure ではサポートされていませんtiledlayout/nexttile または uigridlayout を使用します

参考資料

トピックファイル対応範囲対応する目的
プロットの種類references/plot-types.md線、散布図、棒グラフ、ヒストグラム、ヒートマップ、サーフェス比較、傾向、分布、関係、サーフェス(一部)
Axes の設定references/axes-config.mduiaxes の設定、ラベル、範囲、目盛り、フォント、凡例、エクスポートすべての目的
注釈references/annotations.mdxline、yline、xregion、text、patchすべての目的(オーバーレイ)
データヒントreferences/data-tips.mdDataTipTemplate、カスタム行、プログラムによるヒントすべての目的(オーバーレイ)
インタラクティブなプロットreferences/interactive-plots.mdButtonDownFcn、マウスコールバック、ドラッグ、HitTest、ツールバー計画パス:インタラクティブ性
チャートのパレットreferences/chart-palettes.mdcolororder、名前付きパレット、SeriesIndex、colormap との比較すべての目的(スタイル設定)
アニメーションreferences/animation.mdその場での更新、animatedline、ストリーミング、パフォーマンス計画パス:アニメーション
複数の Axesreferences/multiple-axes.mdtiledlayout、nexttile、linkaxes、周辺タイル計画パス:複数パネル
パフォーマンスreferences/performance.md遅延読み込み、バッチ更新、スロットリング、parfeval、起動計画パス:パフォーマンス
参考資料の不足(追加執筆が必要)

以下の目的には専用の参考ファイルがありません。組み込みの MATLAB API に関する知識を使用してください。

  • 構成 — piechart、donutchart、積み上げ棒グラフ/面グラフ、wordcloud、bubblecloud
  • 地理空間 — geoplot、geoscatter、geobubble、geodensityplot
  • 方向/極座標 — polarplot、polarscatter、polarhistogram、polarbubblechart、compassplot、fpolarplot
  • ベクトル場と流れ — quiver、quiver3、feather、streamline、streamslice、streamribbon、streamtube、streamparticles、coneplot
  • ボリューム可視化 — slice、contourslice、coneplot、isosurface/isocap のワークフロー
  • 画像と行列(一部) — image、imagesc は対象外です。heatmap は plot-types に記載されています
  • サーフェス(一部) — surf のみ対応しています。mesh、contour、ribbon、pcolor は今後追加予定です
外部スキル(呼び出しのみ、内容は未読)
  • matlab-apply-theme — チャートでダークモード、ブランドカラー、またはカスタムパレットが必要な場合に使用します

Copyright 2026 The MathWorks, Inc.


コメント