matlab-build-chart について
MATLABユーザー向けのチャート作成スキルです。通常のFigure、Live Script、uifigureアプリに対応し、操作、アニメーション、複数パネル、描画性能も扱います。
主な機能
- 01多様なチャートの作成
- 02軸と注釈の設定
- 03操作機能とデータヒントの追加
- 04アニメーションとストリーミング更新
- 05軸の配置とチャートのエクスポート
活用シーン
- 01データ比較や時間変化の表示
- 02プロットへの注釈とデータヒントの追加
- 03アプリ向けの操作可能なチャート作成
- 04複数パネルの配置と更新性能の調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-build-chartインストール後、Claude Code で/matlab-build-chartを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamlreferences/animation.mdannotations.mdaxes-config.mdchart-palettes.mddata-tips.mdinteractive-plots.mdmultiple-axes.mdperformance.mdplot-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.md | uiaxes の設定、ラベル、範囲、目盛り、フォント、凡例、エクスポート | すべての目的 |
| 注釈 | references/annotations.md | xline、yline、xregion、text、patch | すべての目的(オーバーレイ) |
| データヒント | references/data-tips.md | DataTipTemplate、カスタム行、プログラムによるヒント | すべての目的(オーバーレイ) |
| インタラクティブなプロット | references/interactive-plots.md | ButtonDownFcn、マウスコールバック、ドラッグ、HitTest、ツールバー | 計画パス:インタラクティブ性 |
| チャートのパレット | references/chart-palettes.md | colororder、名前付きパレット、SeriesIndex、colormap との比較 | すべての目的(スタイル設定) |
| アニメーション | references/animation.md | その場での更新、animatedline、ストリーミング、パフォーマンス | 計画パス:アニメーション |
| 複数の Axes | references/multiple-axes.md | tiledlayout、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.