antv-g2-chart
G2 v5のチャートコードを生成します。ユーザーがG2を使った棒グラフ・折れ線グラフ・円グラフ・散布図・エリアチャートなどのデータビジュアライゼーションを求めた際に使用します。
description の原文を見る
Generate G2 v5 chart code. Use when user asks for G2 charts, bar charts, line charts, pie charts, scatter plots, area charts, or any data visualization with G2 library.
SKILL.md 本文
G2 v5 チャートコードジェネレーター
あなたは AntV G2 v5 チャートライブラリの専門家です。G2 v5 のベストプラクティスに従い、正確で実行可能なコードを生成します。
1. コア制約 / Core Constraints(必須に従うこと)
containerは必須:new Chart({ container: 'container', ... })- Spec モード只を使用:
chart.options({ type: 'interval', data, encode: {...} })(V4 チェーン API は禁止パターンを参照) chart.options()は 1 回のみ呼び出し可: 複数回呼び出すと完全に前の設定が上書きされ、最後の呼び出しのみが有効になります。複数 mark の積み重ねには、chart.options()を複数回呼び出すのではなく、type: 'view'+children配列を使用してくださいencodeオブジェクト:encode: { x, y }(V4 の.position('x*y')は禁止)transformは配列である必要があります:transform: [{ type: 'stackY' }]labelsは複数形:label: {}ではなくlabels: [{ text: 'field' }]を使用coordinateルール:- 座標系タイプを直接記述:
coordinate: { type: 'theta' }、coordinate: { type: 'polar' } - transpose は変換であり座標系タイプではなく、
transform配列に記述する必要があります:coordinate: { transform: [{ type: 'transpose' }] } - ❌ 禁止:
coordinate: { type: 'transpose' }
- 座標系タイプを直接記述:
- 範囲エンコーディング(ガントチャート、candlestick など):
encode: { y: 'start', y1: 'end' }、y: ['start', 'end']は禁止 - スタイルの原則: ユーザーの説明で言及されたスタイル(radius、fillOpacity、color、fontSize など)はすべて完全に保持する必要があります。ユーザーが言及していない装飾スタイル(
shadowBlur、shadowColor、shadowOffsetX/Yなど)は追加しないでください animateルール: ユーザーが明確にアニメーションを要求していない場合はanimate設定を追加しないでください(G2 はデフォルトアニメーションが付属しています)。ユーザーが明確にアニメーション要件を説明した場合のみ追加してくださいscale.color.paletteは有効な値のみ使用可: palette は d3-scale-chromatic を通じて検索され、不正な名前はUnknown paletteエラーをスローします。存在しない名前を推測または作成しないでください('blueOrange'、'redGreen'、'hot'、'jet'、'coolwarm'などはすべて不正です)。有効な一般的な値: 順序色'blues'|'greens'|'reds'|'ylOrRd'|'viridis'|'plasma'|'turbo';発散色'rdBu'|'rdYlGn'|'spectral';不確かな場合はrange: ['#startColor', '#endColor']カスタマイズを使用してください- ユーザーコードで
d3.*を使用禁止: G2 は内部で d3 を使用しますが、d3オブジェクトはユーザーコードスコープに公開されません。d3.sum()などを呼び出すとReferenceError: d3 is not definedがスローされます。集計が必要な場合は、G2 の組み込みオプション(sortXのreducer: 'sum'など)を優先して使用してください。カスタマイズが必要な場合はネイティブ JS を使用してください:d3.sum(arr, d=>d.v)→arr.reduce((s,d)=>s+d.v,0);d3.max(arr, d=>d.v)→Math.max(...arr.map(d=>d.v)) - ユーザーが配色を指定しない場合、白または近白色を図形の塗りつぶし色として使用禁止:
style: { fill: '#fff' }、style: { fill: 'white' }、style: { fill: '#ffffff' }などは白い背景では図形が完全に見えなくなります。配色を指定しない場合は、G2 のencode.colorの自動テーマ色割り当てに依存するか、明確な視覚的区別がある色('#5B8FF9'など)を使用してください。以下は合法的な例外です: ラベルテキストfill: '#fff'(暗い背景内ラベル)、分割線stroke: '#fff'(スタック/pack/treemap の分割白線) paddingはnumber | 'auto'のみを受け入れ、配列形式は禁止:padding: [40, 30, 40, 50]は G2 v5 では無効です(無視されるか報告されます)。四辺統一はpadding: 40を使用してください。方向別制御はpaddingTop/paddingRight/paddingBottom/paddingLeftを個別に設定してください。デフォルト'auto'はすでに座標軸/凡例のための空間を自動的に予約しており、ほとんどの場合手動設定は不要です。padding: 0を設定禁止——自動計算をオフにし、座標軸/凡例が切り取られます;特定の方向のみ調整する場合は対応する方向のみを個別に設定してくださいautoFit: trueの場合、同時にwidthを設定禁止:autoFitは完全にwidthを無視し、同時に出現する場合widthは無効です。autoFit: trueの場合はheightのみを設定してください。固定幅高さが必要な場合はautoFitを削除し、width+heightを使用してください- ユーザーがコンテナを指定しない場合:
containerのデフォルトは'container'です。document.createElement('div')で作成しないでください。コードの末尾にはchart.render();が必須です
1.1 禁止パターン / Forbidden Patterns
V4 構文の使用禁止。V5 Spec モードを使用する必要があります:
// ❌ 禁止:V4 createView
const view = chart.createView();
view.options({...});
// ❌ 禁止:V4 チェーン API 呼び出し
chart.interval()
.data([...])
.encode('x', 'genre')
.encode('y', 'sold')
.style({ radius: 4 });
// ❌ 禁止:V4 チェーン encode
chart.line().encode('x', 'date').encode('y', 'value');
// ❌ 禁止:V4 source
chart.source(data);
// ❌ 禁止:V4 position
chart.interval().position('genre*sold');
// ✅ 正確:V5 Spec モード
chart.options({
type: 'interval',
data: [...],
encode: { x: 'genre', y: 'sold' },
style: { radius: 4 },
});
理由: V5 は Spec モードを使用し、構造が明確で、シリアル化、動的生成、デバッグが容易です。
createView の正確な V5 置き換え方案
chart.createView() は V4 では「複数ビューが同じコンテナを共有するが、データが異なる」のに使用され、V5 では 2 つのシナリオに対応しています:
シナリオ A: 同じ座標系内に複数の mark を積み重ねる(最も一般的)
→ type: 'view' + children 配列を使用します。children 内に view または children を再度ネストすることはできません:
// ✅ 複数 mark 積み重ね(折線 + 散点)
chart.options({
type: 'view',
data,
children: [
{ type: 'line', encode: { x: 'date', y: 'value' } },
{ type: 'point', encode: { x: 'date', y: 'value' } },
],
});
シナリオ B: 複数の独立した座標系を並べて/積み重ねる(人口ピラミッド、butterfly グラフなど)
→ type: 'spaceLayer' + children を使用します(各子ビューは独立したデータと座標系を持ちます):
// ✅ 人口ピラミッド:左右両側の独立ビューを積み重ねて、Y 軸を共有
chart.options({
type: 'spaceLayer',
children: [
{
type: 'interval',
data: leftData, // 左側データ(負値または反転)
coordinate: { transform: [{ type: 'transpose' }, { type: 'reflectX' }] },
encode: { x: 'age', y: 'male' },
axis: { y: { position: 'right' } },
},
{
type: 'interval',
data: rightData, // 右側データ
coordinate: { transform: [{ type: 'transpose' }] },
encode: { x: 'age', y: 'female' },
axis: { y: false },
},
],
});
// ✅ より簡単な方案:単一ビュー + 負値技巧(データは 1 つの配列内、方向で区別)
chart.options({
type: 'interval',
data: combinedData, // マージされたデータ、負値で方向を区別
coordinate: { transform: [{ type: 'transpose' }] },
encode: {
x: 'age',
y: (d) => d.sex === 'male' ? -d.population : d.population,
color: 'sex',
},
axis: {
y: { labelFormatter: (d) => Math.abs(d) }, // 絶対値を表示
},
});
選択原則:
- 両側のデータ構造が同じで、方向が反対なだけ → 負値技巧を優先(単一
interval、コード最も簡潔) - 両側で完全に独立した座標系/スケールが必要 →
spaceLayerを使用
1.2 存在しない Mark タイプの使用禁止 / Hallucinated Mark Types
以下のタイプは他のチャートライブラリ(ECharts、Vega など)からのもので、G2 には存在しません。使用するとランタイムエラーが発生します:
| ❌ 誤った書き方 | ✅ 正確な置き換え |
|---|---|
type: 'ruleX' | type: 'lineX'(垂直参考線) |
type: 'ruleY' | type: 'lineY'(水平参考線) |
type: 'regionX' | type: 'rangeX'(X 軸区間ハイライト) |
type: 'regionY' | type: 'rangeY'(Y 軸区間ハイライト) |
type: 'venn' | type: 'path' + data.transform: [{ type: 'venn' }] |
G2 の合法的な mark タイプの完全なリスト(他のタイプを自由に作成しないでください):
- 基本:
interval、line、area、point、rect、cell、text、image、path、polygon、shape - 接続:
link、connector、vector - 参考線/区域:
lineX、lineY、rangeX、rangeY;range(きわめてまれで、x/y の両方を制限する必要がある 2 次元矩形の場合のみ使用でき、データの x/y フィールドは[start,end]配列である必要があります) - 統計:
box、boxplot、density、heatmap、beeswarm - 階層/関係:
treemap、pack、partition、tree、sankey、chord、forceGraph - 特別:
wordCloud、gauge、liquid - 拡張パッケージが必要:
sunburst(@antv/g2-extension-plotが必要です。旭日図を参照)
2. 一般的なエラー / Common Mistakes
⚠️ 最頻度エラー: chart.options() を複数回呼び出し禁止
chart.options() は全量置き換えで、マージではありません。複数回呼び出す場合、最後の 1 回のみ有効となり、前の設定はすべて失われます。各チャートは chart.options() を 1 回のみ呼び出すことができます。
// ❌ 誤り: `chart.options()` を複数回呼び出す——毎回前の設定を完全に置き換え、最後の 1 回のみ有効
chart.options({ type: 'interval', data, encode: { x: 'x', y: 'y' } }); // ❌ 上書きされる、レンダリングされない
chart.options({ type: 'line', data, encode: { x: 'x', y: 'y' } }); // ❌ 上書きされる、レンダリングされない
chart.options({ type: 'text', data, encode: { x: 'x', y: 'y', text: 'label' } }); // これのみ有効
// ✅ 正確: 複数 mark 積み重ねは `type: 'view'` + `children` 配列を使用し、1 回の `chart.options()` で完了
chart.options({
type: 'view',
data,
children: [
{ type: 'interval', encode: { x: 'x', y: 'y' } },
{ type: 'line', encode: { x: 'x', y: 'y' } },
{ type: 'text', encode: { x: 'x', y: 'y', text: 'label' } },
],
});
// ✅ 子 mark が異なるデータを必要とする場合、`children` で個別にデータを指定
chart.options({
type: 'view',
data: mainData,
children: [
{ type: 'interval', encode: { x: 'x', y: 'y' } },
{ type: 'text', data: labelData, encode: { x: 'x', text: 'label' } },
],
});
複数 mark 結合ルール:
childrenのみ使用可能。marks、layersなどのプロパティ禁止childrenはネストできない(children内にtype: 'view'+childrenを再度持つことはできない)- 複雑な複数座標系結合は
spaceLayer/spaceFlexを使用
// ❌ 誤り: `marks`/`layers` を使用(禁止)
chart.options({ type: 'view', data, marks: [...] }); // ❌
chart.options({ type: 'view', data, Layers: [...] }); // ❌
// ❌ 誤り: `children` ネスト(禁止)
chart.options({ type: 'view', children: [{ type: 'view', children: [...] }] }); // ❌
// ✅ 正確: 複雑な複数座標系結合は `spaceLayer` を使用
chart.options({
type: 'spaceLayer',
children: [
{ type: 'view', children: [...] },
{ type: 'line', encode: { x: 'x', y: 'y' } },
],
});
その他の一般的なエラー
// ❌ 誤り: padding 配列形式(CSS 短縮形)、G2 v5 非サポート、無視される
const chart = new Chart({ container: 'container', padding: [40, 30, 40, 50] }); // ❌
// ✅ 正確: 四辺統一
const chart = new Chart({ container: 'container', padding: 40 });
// ✅ 正確: 方向別制御
const chart = new Chart({ container: 'container', paddingTop: 40, paddingLeft: 60 });
// ❌ 誤り: container がない
const chart = new Chart({ width: 640, height: 480 });
// ✅ 正確: container 必須
const chart = new Chart({ container: 'container', width: 640, height: 480 });
// ❌ 誤り: transform をオブジェクトとして
chart.options({ transform: { type: 'stackY' } });
// ✅ 正確: transform を配列として
chart.options({ transform: [{ type: 'stackY' }] });
// ❌ 誤り: label(単数)
chart.options({ label: { text: 'value' } });
// ✅ 正確: labels(複数)
chart.options({ labels: [{ text: 'value' }] });
// ❌ 誤り: 不要なスケールタイプ指定
chart.options({ scale: { x: { type: 'linear' }, y: { type: 'linear' } } });
// ✅ 正確: G2 にスケールタイプを自動推論させる
chart.options({ scale: { y: { domain: [0, 100] } } });
<!-- CONSTRAINTS:END -->
3. 基本構造 / Basic Structure
import { Chart } from '@antv/g2';
const chart = new Chart({ container: 'container', width: 640, height: 480 });
chart.options({
type: 'interval', // Mark type
data: [...], // Data array
encode: { x: 'field', y: 'field', color: 'field' },
transform: [], // Data transforms
scale: {}, // Scale config
coordinate: {}, // Coordinate system
style: {}, // Style config
labels: [], // Data labels
tooltip: {}, // Tooltip config
axis: {}, // Axis config
legend: {}, // Legend config
});
chart.render();
4. コア概念 / Core
コア概念は G2 の基礎であり、これらの概念の理解は G2 の正確な使用の前提です。
4.1 Chart 初期化
Chart は G2 のコアクラスで、すべてのチャートは Chart インスタンスから始まります。
import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container', // 必須: DOM コンテナ ID または要素
width: 640, // オプション: 幅
height: 480, // オプション: 高さ
autoFit: true, // オプション: コンテナサイズに自動フィット
padding: 'auto', // オプション: 内側の余白
theme: 'light', // オプション: テーマ
});
詳細ドキュメント:
Chart 初期化
4.2 encode チャネルシステム
encode はデータフィールドを視覚チャネルにマップします。これは G2 のコア概念です。
| チャネル | 用途 | 例 |
|---|---|---|
x | X 軸位置 | encode: { x: 'month' } |
y | Y 軸位置 | encode: { y: 'value' } |
color | 色 | encode: { color: 'category' } |
size | サイズ | encode: { size: 'population' } |
shape | 形状 | encode: { shape: 'type' } |
詳細ドキュメント:
encode チャネルシステム
4.3 ビュー結合 (view + children)
view タイプと children 配列を使用して複数の mark を結合します。
chart.options({
type: 'view',
data,
children: [
{ type: 'line', encode: { x: 'date', y: 'value' } },
{ type: 'point', encode: { x: 'date', y: 'value' } },
],
});
詳細ドキュメント:
ビュー結合
5. 概念 / Concepts
概念ガイドは正確なチャートタイプと設定方案の選択を支援します。
5.1 チャートタイプ選択 / Chart Selection
データの特性と可視化の目標に基づいて、適切なチャートタイプを選択します:
| データ関係 | 推奨チャート | Mark |
|---|---|---|
| 比較 | 棒グラフ、水平棒グラフ | interval |
| トレンド | 折線グラフ、面積グラフ | line、area |
| 占有率 | 円グラフ、ドーナツグラフ | interval + theta |
| 分布 | ヒストグラム、箱ひげ図 | rect、boxplot |
| 関連 | 散布図、バブルチャート | point |
| 階層 | 矩形樹図、分割図、旭日図 | treemap、partition、sunburst(拡張パッケージが必要) |
詳細ドキュメント:
チャートタイプ選択ガイド
5.2 視覚チャネル / Visual Channels
視覚チャネルはデータから視覚属性へのマッピング方法です:
| チャネルタイプ | 適切なデータ | 認識精度 |
|---|---|---|
| 位置 | 連続/離散 | 最高 |
| 長さ | 連続 | 高 |
| 色(色相) | 離散 | 中 |
| 色(輝度) | 連続 | 中 |
| サイズ | 連続 | 中低 |
| 形状 | 離散 | 低 |
詳細ドキュメント:
視覚チャネル
5.3 色理論 / Color Theory
適切な色スキームを選択し、チャートの可読性を向上させます:
| シナリオ | 推奨スキーム | 例 |
|---|---|---|
| 分類データ | 離散色パレット | category10、category20 |
| 連続データ | 順序色パレット | Blues、RdYlBu |
| 正負対比 | 発散色パレット | RdYlGn |
詳細ドキュメント:
色理論
6. Mark / チャートタイプ
Mark は G2 のコア可視化要素で、データの視覚的表現方法を決定します。各 Mark タイプは特定のデータタイプと可視化シナリオに適しています。
6.1 棒グラフシリーズ / Interval
棒グラフは分類データのサイズ比較に使用され、最も一般的なチャートタイプです。基本棒グラフは interval mark を使用し、積み重ね棒グラフは stackY transform を追加する必要があり、グループ化棒グラフは dodgeX transform を使用します。
| タイプ | Mark | キー設定 |
|---|---|---|
| 基本棒グラフ | interval | - |
| 積み重ね棒グラフ | interval | transform: [{ type: 'stackY' }] |
| グループ化棒グラフ | interval | transform: [{ type: 'dodgeX' }] |
| パーセンテージ棒グラフ | interval | transform: [{ type: 'normalizeY' }] |
| 水平棒グラフ | interval | coordinate: { transform: [{ type: 'transpose' }] } |
詳細ドキュメント:
基本棒グラフ|積み重ね棒グラフ|グループ化棒グラフ|パーセンテージ棒グラフ
6.2 折線グラフシリーズ / Line
折線グラフはデータが時間または有序カテゴリで変化する傾向を表示するのに使用されます。単線、複数線の比較、および異なるインターポレーション方法をサポートします。
| タイプ | Mark | キー設定 |
|---|---|---|
| 基本折線グラフ | line | - |
| 複数シリーズ折線 | line | encode: { color: 'category' } |
| スムーズ曲線 | line | encode: { shape: 'smooth' } |
| ステップ線 | line | encode: { shape: 'step' } |
詳細ドキュメント:
基本折線グラフ|複数シリーズ折線|LineX/LineY
6.3 面積グラフシリーズ / Area
面積グラフは折線グラフの基礎で領域を塗りつぶします。量が時間とともに変化する程度を強調します。積み重ね面積グラフは各部分が全体への貢献を表示するのに使用されます。
| タイプ | Mark | キー設定 |
|---|---|---|
| 基本面積グラフ | area | - |
| 積み重ね面積グラフ | area | transform: [{ type: 'stackY' }] |
詳細ドキュメント:
基本面積グラフ|積み重ね面積グラフ
6.4 円グラフ/ドーナツグラフ / Arc (Pie/Donut)
円グラフは各部分が全体に占める割合関係を表示するのに使用されます。theta 座標系を interval mark と組み合わせて実装します。
| タイプ | Mark | キー設定 |
|---|---|---|
| 円グラフ | interval | coordinate: { type: 'theta' } + stackY |
| ドーナツグラフ | interval | coordinate: { type: 'theta', innerRadius: 0.6 } |
詳細ドキュメント:
円グラフ|ドーナツグラフ
6.5 散布図/バブルチャート / Point
散布図は 2 つの数値変数の関係を表示するのに使用されます。バブルチャートはポイントのサイズで第 3 の次元を表示します。
| タイプ | Mark | キー設定 |
|---|---|---|
| 散布図 | point | encode: { x, y } |
| バブルチャート | point | encode: { x, y, size } |
詳細ドキュメント:
散布図|バブルチャート
6.6 ヒストグラム / Histogram
ヒストグラムは連続数値データの分布を表示するのに使用され、rect マークと binX 変換を使用して実装されます。棒グラフとは異なり、ヒストグラムのバーは隙間がなく、データが連続であることを示します。
| タイプ | Mark | キー設定 |
|---|---|---|
| 基本ヒストグラム | rect | transform: [{ type: 'binX', y: 'count' }] |
| 複数分布の比較 | rect | groupBy グループ化 |
詳細ドキュメント:
ヒストグラム
6.7 バラ図/ラジアル棒グラフ / Polar Charts
極座標系下のチャート。半径または円弧長でデータサイズを表示し、視覚的により美しくなります。
| タイプ | Mark | キー設定 |
|---|---|---|
| バラ図 | interval | coordinate: { type: 'polar' } |
| ラジアル棒グラフ | interval | coordinate: { type: 'radial' } |
詳細ドキュメント:
バラ図|ラジアル棒グラフ
6.8 統計分布グラフ / Distribution
データ分布の特性を表示するチャート。統計分析と探索的データ分析に適しています。
| タイプ | Mark | 用途 |
|---|---|---|
| 箱ひげ図 | boxplot | データ分布統計 |
| Box 図 | box | 五数概要を手動指定した箱ひげ図 |
| 密度図 | density | カーネル密度推定曲線 |
| バイオリン図 | density + boxplot | 密度分布 + 統計情報 |
| 多角形 | polygon | カスタム多角形領域 |
詳細ドキュメント:
箱ひげ図|Box 図|密度図|バイオリン図|多角形
6.9 関係グラフ / Relation
データ間の関係を表示するチャート。ネットワーク分析と集合関係の表示に適しています。
| タイプ | Mark | 用途 |
|---|---|---|
| サンキー図 | sankey | フロー/転送関係 |
| コード図 | chord | マトリックスフロー関係 |
| ベン図 | path + venn データ変換 | セット交差関係(venn はデータ変換であり mark タイプではない) |
| アーク接続図 | line + point | ノードリンク関係 |
詳細ドキュメント:
サンキー図|コード図|ベン図|アーク接続図
6.10 プロジェクト管理グラフ / Project
プロジェクト管理と進行状況追跡に適したチャート。
| タイプ | Mark | 用途 |
|---|---|---|
| ガントチャート | interval | タスク時間割り当て |
| 弾丸図 | interval + point | KPI インジケーター表示 |
詳細ドキュメント:
ガントチャート|弾丸図
6.11 金融チャート / Finance
金融データ分析に適したプロフェッショナルチャート。
| タイプ | Mark | 用途 |
|---|---|---|
| K 線チャート | link + interval | 株式 4 値データ |
詳細ドキュメント:
K 線チャート
6.12 多次元データグラフ / Multivariate
多次元データ関係を表示するチャート。
| タイプ | Mark | 用途 |
|---|---|---|
| 平行座標系 | line | 多次元データ関係分析 |
| レーダーチャート | line | 多次元データ比較 |
詳細ドキュメント:
平行座標系|レーダーチャート
6.13 比較グラフ / Comparison
データ比較に適したチャート。
| タイプ | Mark | 用途 |
|---|---|---|
| 双方向棒グラフ | interval | 正負データ比較 |
詳細ドキュメント:
双方向棒グラフ
6.14 基本マーク / Basic Marks
基本マークは G2 の低レベルの構築ブロックで、独立して使用したり、複雑なチャートを構築するために結合できます。
| タイプ | Mark | 用途 |
|---|---|---|
| 矩形 | rect | 矩形領域、ヒストグラム/ヒートマップの基礎 |
| テキスト | text | テキスト標注とラベル |
| 画像 | image | 画像マーク。データポイントを画像で表現 |
| パス | path | カスタムパス描画 |
| リンク | link | 2 点間の接続線 |
| コネクタ | connector | データポイント間の接続線 |
| 形状 | shape | カスタム形状描画 |
| ベクトル | vector | ベクトル/矢印マーク、風場図など |
詳細ドキュメント:
rect|text|image|path|link|connector|shape|vector
6.15 範囲マーク / Range
範囲マークはデータの区間範囲を表示するのに使用されます。
| タイプ | Mark | 用途 |
|---|---|---|
| 時間段/区間ハイライト(X 方向) | rangeX | X 軸区間。encode: { x: 'start', x1: 'end' } |
| 数値範囲ハイライト(Y 方向) | rangeY | Y 軸区間。encode: { y: 'min', y1: 'max' } |
| 2 次元矩形領域 | range | x/y フィールドが [start,end] 配列の場合。encode: { x:'x', y:'y' }、きわめてまれに使用 |
詳細ドキュメント:
range/rangeY|rangeX
6.16 分布とパッキンググラフ / Distribution & Pack
| タイプ | Mark | 用途 |
|---|---|---|
| 蜂群図 | point + pack | データポイント密集配置分布表示 |
| パッキング図 | pack | 階層データの円形パッキング |
詳細ドキュメント:
蜂群図|パッキング図
6.17 階層構造グラフ / Hierarchy
階層データを表示するチャート。面積または半径でデータ占有率を表現します。
| タイプ | Mark | 用途 |
|---|---|---|
| 矩形樹図 | treemap | 階層データ占有率 |
| 旭日図 | sunburst⚠️ | 多層階層同心円表示(@antv/g2-extension-plot インポート必要) |
| 分割図 | partition | 階層データ分割表示 |
| 樹図 | tree | 樹形階層構造 |
詳細ドキュメント:
矩形樹図|旭日図|分割図|樹図
6.18 その他のチャート / Others
| タイプ | Mark | 用途 |
|---|---|---|
| ヒートマップ | cell | 2 次元マトリックスデータ可視化 |
| 密度ヒートマップ | heatmap | 連続密度ヒートマップ |
| ゲージ | gauge | インジケーター進行状況表示 |
| ワードクラウド | wordCloud | テキスト頻度可視化 |
| 水波図 | liquid | パーセンテージ進行状況 |
詳細ドキュメント:
ヒートマップ|密度ヒートマップ|ゲージ|ワードクラウド|水波図
7. データ / Data
データ変換はデータロード段階で実行され、data.transform で設定され、そのデータを使用するすべてのマークに影響します。
7.1 Data Transform タイプ(data.transform で設定)
| 変換 | タイプ | 用途 | 使用例シーン |
|---|---|---|---|
| fold | fold | 幅表を長表に変換 | 複数列データを複数シリーズに変換 |
| filter | filter | 条件フィルタリング | 無効データをフィルタリング |
| sort | sort | コールバック関数でソート | カスタムソートロジック |
| sortBy | sortBy | フィールドでソート | フィールド値でソート |
| map | map | データマッピング変換 | 計算フィールド追加 |
| join | join | データテーブル結合 | 外部データ関連付け |
| pick | pick | 指定フィールド選択 | フィールド精簡 |
| rename | rename | フィールド名変更 | フィールド名変更 |
| slice | slice | データ範囲切り取り | ページング/切り取り |
| ema | ema | 指数移動平均 | 時系列平滑化 |
| kde | kde | カーネル密度推定 | 密度図/バイオリン図 |
| log | log | コンソールへデータ出力 | デバッグ |
| custom | custom | カスタムデータ処理 | 複雑な変換 |
7.2 データ形式とパターン
| タイプ | 用途 |
|---|---|
| テーブルデータ形式 | G2 が受け入れる標準テーブルデータ形式の説明 |
| データ変換パターン | Data Transform と Mark Transform の結合使用パターン |
詳細ドキュメント:
filter|sort|sortBy|fold|slice|ema|kde|log|fetch|データ変換パターン
7.3 一般的なエラー: Data Transform を誤った位置に配置
// ❌ 誤り: fold はデータ変換であり、mark transform に配置できない
chart.options({
type: 'interval',
data: wideData,
transform: [{ type: 'fold', fields: ['a', 'b'] }], // ❌ 誤り!
});
// ✅ 正確: fold を data.transform に配置
chart.options({
type: 'interval',
data: {
type: 'inline',
value: wideData,
transform: [{ type: 'fold', fields: ['a', 'b'] }], // ✅ 正確
},
transform: [{ type: 'stackY' }], // mark transform
});
7.4 結合例:幅表データ + 積み重ねグラフ
// 幅表データ:各月に複数タイプのデータ列がある
const wideData = [
{ year: '2000', 'タイプ A': 21, 'タイプ B': 16, 'タイプ C': 8 },
{ year: '2001', 'タイプ A': 25, 'タイプ B': 16, 'タイプ C': 8 },
// ...
];
chart.options({
type: 'interval',
data: {
type: 'inline',
value: wideData,
transform: [
// ✅ Data Transform: 幅表を長表に変換
{ type: 'fold', fields: ['タイプ A', 'タイプ B', 'タイプ C'], key: 'type', value: 'value' },
],
},
encode: { x: 'year', y: 'value', color: 'type' },
transform: [
// ✅ Mark Transform: 積み重ね
{ type: 'stackY' },
],
coordinate: { type: 'polar' }, // 極座標系
});
8. 変換 / Transforms
マーク変換は視覚チャネルを結合する際に実行され、マークの transform 配列で設定され、データ集計と重なり回避などに使用されます。
設定位置: transform 配列。data、encode と同レベルで、data.transform にはありません。
chart.options({
type: 'interval',
data,
encode: { x: 'category', y: 'value', color: 'type' },
transform: [ // ✅ Mark Transform: data/encode と同レベル
{ type: 'stackY' },
{ type: 'sortX', by: 'y' },
],
});
8.1 重なり回避変換 / Anti-overlap
| 変換 | タイプ | 用途 |
|---|---|---|
| 積み重ね | stackY | データ積み重ね。積み重ねグラフに使用 |
| グループ化 | dodgeX | データグループ化。グループ化グラフに使用 |
| 抖動 | jitter | 散点抖動で重なり回避 |
| X 軸抖動 | jitterX | X 方向抖動 |
| Y 軸抖動 | jitterY | Y 方向抖動 |
| パッキング | pack | データポイント密集配置 |
詳細ドキュメント:
stackY|dodgeX|jitter|jitterX|jitterY|pack
8.2 集計変換 / Aggregation
| 変換 | タイプ | 用途 |
|---|---|---|
| 汎用グループ化 | group | 汎用グループ化集計 |
| グループ化集計 | groupX / groupY | 次元別グループ化と集計 |
| グループ化色 | groupColor | 色別グループ化集計 |
| 分箱 | bin | 2 次元分箱 |
| X 軸分箱 | binX | X 軸方向分箱 |
| サンプリング | sample | データサンプリング |
詳細ドキュメント:
group|groupX|groupY|groupColor|bin|binX|sample
8.3 ソート変換 / Sorting
| 変換 | タイプ | 用途 |
|---|---|---|
| X 軸ソート | sortX | X チャネルでソート |
| Y 軸ソート | sortY | Y チャネルでソート |
| 色ソート | sortColor | 色チャネルでソート |
詳細ドキュメント:
sortX|sortY|colorSort
8.4 選択変換 / Selection
| 変換 | タイプ | 用途 |
|---|---|---|
| 選択 | select | グローバル選択データ |
| X 軸選択 | selectX | X グループ別選択 |
| Y 軸選択 | selectY | Y グループ別選択 |
詳細ドキュメント:
select|selectX|selectY
8.5 その他の変換 / Others
| 変換 | タイプ | 用途 |
|---|---|---|
| 正規化 | normalizeY | Y 軸正規化 |
| 差値 | diffY | 差値計算 |
| 対称 | symmetryY | Y 軸対称 |
| 弾性 X | flexX | X 軸弾性レイアウト |
| 積み重ね入場 | stackEnter | 入場アニメーション積み重ね |
詳細ドキュメント:
normalizeY|diffY|symmetryY|flexX|stackEnter
9. 相互作用 / Interactions
G2 は豊富な組み込み相互作用を提供し、データ探索とチャート操作に使用されます。
9.1 選択クラス相互作用 / Selection
| 相互作用 | タイプ | 用途 |
|---|---|---|
| 要素選択 | elementSelect | クリック選択データ要素 |
| 条件別選択 | elementSelectBy | 条件別一括選択 |
| 枠選択 | brush / brushX / brushY | 矩形区域選択 |
| 2D 枠選択 | brushXY | XY 同時枠選択 |
| 軸枠選択 | brushAxis | 座標軸範囲選択 |
| 凡例フィルタリング | legendFilter | 凡例クリックでデータフィルタリング |
詳細ドキュメント:
elementSelect|elementSelectBy|brush|brushXY|brushAxis|legendFilter
9.2 ハイライトクラス相互作用 / Highlight
| 相互作用 | タイプ | 用途 |
|---|---|---|
| 要素ハイライト | elementHighlight | ホバーで要素ハイライト |
| 条件別ハイライト | elementHighlightBy | 条件別一括ハイライト |
| ホバースケール | elementHoverScale | ホバー時要素拡大 |
| 凡例ハイライト | legendHighlight | 凡例ホバーで対応要素ハイライト |
| 枠選択ハイライト | brushXHighlight / brushYHighlight | 枠選択区域ハイライト |
詳細ドキュメント:
elementHighlight|elementHighlightBy|elementHoverScale|legendHighlight|brushXHighlight|brushYHighlight|単一軸枠選択ハイライト
9.3 フィルタークラス相互作用 / Filter
| 相互作用 | タイプ | 用途 |
|---|---|---|
| スライダーフィルタリング | sliderFilter | スライダーでデータ範囲フィルタリング |
| スクロールバーフィルタリング | scrollbarFilter | スクロールバーでデータフィルタリング |
| 枠選択フィルタリング | brushFilter | 枠選択区域フィルタリング |
| X 軸枠選択フィルタリング | brushXFilter | X 軸方向枠選択フィルタリング |
| Y 軸枠選択フィルタリング | brushYFilter | Y 軸方向枠選択フィルタリング |
| 適応フィルタリング | adaptiveFilter | 適応データフィルタリング |
詳細ドキュメント:
sliderFilter|scrollbarFilter|brushFilter|brushXFilter|brushYFilter|adaptiveFilter
9.4 その他の相互作用 / Others
| 相互作用 | タイプ | 用途 |
|---|---|---|
| ツールチップ | tooltip | ホバーでデータ詳細表示 |
| ポップアップツールチップ | poptip | シンプルなポップアップツールチップ |
| ドリルダウン | drilldown | 階層データドリルダウン |
| 矩形樹図ドリルダウン | treemapDrilldown | 矩形樹図階層ドリルダウン |
| ズーム | fisheye | 魚眼拡大鏡効果 |
| スクロールホ |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- antvis
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/antvis/chart-visualization-skills / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。