mcpField
S
syncfusion-javascript-accumulation-chart

syncfusion-javascript-accumulation-chart

github.com/syncfusion開発065 回インストール1 週間前に更新
リポジトリ

syncfusion-javascript-accumulation-chart について

Syncfusion EJ2 の累積チャートを TypeScript と JavaScript で実装するためのスキルです。円、ドーナツ、ファネル、ピラミッドチャートを扱い、データ連携、操作、スタイル、アクセシビリティ、性能確認も説明します。

主な機能

  1. 01円・ドーナツ・ファネル・ピラミッドチャートの実装
  2. 02凡例、データラベル、ツールチップの設定
  3. 03ローカル・リモートデータと動的更新への対応
  4. 04選択、ハイライト、アノテーションの設定
  5. 05テーマ、アクセシビリティ、性能確認の案内

活用シーン

  1. 01カテゴリ別の構成比の表示
  2. 02順序のある段階やコンバージョン過程の表示
  3. 03ラベル、凡例、チャート操作の追加
  4. 04TypeScript または JavaScript アプリでの累積チャート実装

インストール

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

$npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-accumulation-chart

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

同梱ファイル

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

references/
accessibility-and-advanced.md
annotations-and-features.md
api-reference.md
API-Refernce_JavaScript.md
API-Refernce_TypeScript.md
chart-types.md
customization-and-styling.md
data-labels.md
getting-started.md
legend-configuration.md
tooltips-and-selection.md

詳細

Syncfusion TypeScript および JavaScript での累積チャートの実装

Syncfusion EJ2 累積チャートは、Pie、Doughnut、Funnel、Pyramid の表示形式でカテゴリ値を可視化します。

このスキルでは、フレームワークに依存しない次の実装を扱います。

  • npm と ES モジュールを使用する TypeScript。
  • npm と ES モジュールを使用する JavaScript。
  • 完全なグローバル EJ2 バンドルを使用する JavaScript。
  • Pie および Doughnut の可視化。
  • Funnel および Pyramid の可視化。
  • 凡例、データラベル、ツールチップ、注釈。
  • 選択とハイライト。
  • ローカルデータとリモートデータ。
  • 動的な更新。
  • 内部テーマ。
  • アクセシビリティ、パフォーマンス、検証、クリーンアップ。

対象を絞った累積チャートの例だけであれば、個別の Syncfusion テーマスタイルシートは必要ありません。チャートレベルの theme プロパティでビジュアルテーマを適用してください。

プラットフォームのサポート

TypeScript

次の要件があるアプリケーションでは TypeScript を使用してください。

  • 型定義と IDE サポート。
  • npm パッケージ管理。
  • ES モジュールのインポート。
  • 機能モジュールの明示的な注入。
  • コンパイル時の検証。
  • TypeScript 対応のビルドプロセス。

インストール:

npm install @syncfusion/ej2-charts

インポート:

import {
    AccumulationChart
} from '@syncfusion/ej2-charts';

オプション機能を使用するには、チャートを構築する前に対応するモジュールをインポートして注入する必要があります。

npm と ES モジュールを使用する JavaScript

次のようなアプリケーションでは、モジュールベースの JavaScript を使用してください。

  • npm。
  • ES モジュールのインポート。
  • バンドラー。
  • 明示的な AccumulationChart.Inject(...) の呼び出し。

インストール:

npm install @syncfusion/ej2-charts

インポート:

import {
    AccumulationChart
} from '@syncfusion/ej2-charts';
グローバル JavaScript

次のようなアプリケーションでは、グローバル JavaScript を使用してください。

  • バージョン指定された EJ2 グローバルバンドル。
  • 従来の HTML ファイルと JavaScript ファイル。
  • ej.charts.AccumulationChart コンストラクター。
  • TypeScript のコンパイルを行わない環境。

バージョン指定された完全なバンドルを使用してください。

<script src="https://cdn.syncfusion.com/ej2/34.2.2/dist/ej2.min.js"></script>

完全なグローバル EJ2 バンドルを使用する場合は、AccumulationChart.Inject(...) を呼び出さないでください。

ブラウザーの互換性は、インストールした EJ2 バージョンの対応ブラウザー一覧に従う必要があります。

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

次のようなタスクでは、このスキルを使用してください。

  • Pie Chart を作成する。
  • Doughnut Chart を作成する。
  • Funnel Chart を作成する。
  • Pyramid Chart を作成する。
  • 全体に対するカテゴリ別の寄与を表示する。
  • 比率構成を表示する。
  • 順序のあるファネル段階を表示する。
  • 階層的な Pyramid セグメントを表示する。
  • 凡例を追加する。
  • データラベルを追加する。
  • ツールチップを追加する。
  • Doughnut の中央ラベルを追加する。
  • ポイントを切り離す。
  • 小さなポイントをグループ化する。
  • 空のポイントを処理する。
  • 選択またはハイライトを有効にする。
  • 注釈を追加する。
  • 色、グラデーション、またはパレットを適用する。
  • ローカルデータまたはリモートデータをバインドする。
  • データを動的に更新する。
  • アクセシブルな解釈をサポートする。
  • パフォーマンスとクリーンアップを検証する。

データをより正確に伝える別の可視化がある場合は、そちらを使用してください。

  • 類似した値を正確に比較するには、Bar Chart または Column Chart を使用してください。
  • 時間の経過に伴う傾向には、Line Chart を使用してください。
  • 段階の順序に意味がある場合に限り、Funnel Chart を使用してください。
  • 全体に対する関係に意味がある場合に限り、Pie Chart または Doughnut Chart を使用してください。

累積チャートの種類

Pie

全体に対するカテゴリ別の寄与を示すには、Pie を使用してください。

type:
    'Pie'
Doughnut

Doughnut Chart は、ゼロ以外の innerRadius を持つ Pie シリーズを使用します。

type:
    'Pie',

innerRadius:
    '40%'

次は使用しないでください。

type:
    'Doughnut'

インストールした API でそのシリーズ値が明示的に導入されている場合を除きます。

Funnel

順序のある段階、パイプライン、またはコンバージョンプロセスには、Funnel を使用してください。

type:
    'Funnel'
Pyramid

比率または階層を示すセグメントには、Pyramid を使用してください。

type:
    'Pyramid'

ナビゲーションガイド

タスクに合ったリファレンスを選択してください。

はじめに

📄 参照先: references/getting-started.md

次の内容については、このリファレンスを使用してください。

  • パッケージのインストール。
  • TypeScript のインポート。
  • モジュールの注入。
  • JavaScript バンドルのセットアップ。
  • ホストの作成と検証。
  • 基本的な Pie Chart の作成。
  • 内部テーマの設定。
  • TypeScript と JavaScript の完全な例。
  • 実行時の検証。
  • 基本的なトラブルシューティング。
グラフの種類と選択

📄 参照: references/chart-types.md

次の項目については、このリファレンスを参照してください。

  • 円グラフ。
  • ドーナツグラフ。
  • ファンネルグラフ。
  • ピラミッドグラフ。
  • 系列固有のモジュール注入。
  • 半径と内半径。
  • ファンネルのネックの寸法。
  • ピラミッドのモード。
  • ギャップ比率。
  • 適切なグラフの種類の選択。
凡例の設定

📄 参照: references/legend-configuration.md

次の項目については、このリファレンスを参照してください。

  • 凡例の表示。
  • 凡例の位置。
  • 配置。
  • 凡例のタイトル。
  • テキストスタイル。
  • ポイントの切り替え。
  • レスポンシブな凡例の動作。
  • 凡例の操作。
  • 凡例のアクセシビリティ。
データラベル

📄 参照: references/data-labels.md

次の項目については、このリファレンスを参照してください。

  • データラベルの有効化。
  • 内側ラベルと外側ラベル。
  • ラベルのフィールドマッピング。
  • 値ラベルとパーセンテージラベル。
  • コネクター線。
  • スマートラベル。
  • テキストの省略と折り返し。
  • ラベルテンプレート。
  • 重なりの防止。
ツールチップと選択

📄 参照: references/tooltips-and-selection.md

次の項目については、このリファレンスを参照してください。

  • 集積グラフのツールチップ。
  • ツールチップの書式設定。
  • ツールチップのテンプレート。
  • ポイントの選択。
  • サポートされている場合の複数選択。
  • 選択パターン。
  • ハイライト表示。
  • インタラクションイベント。
  • ツールチップ外での詳細情報の表示。
注釈と機能

📄 参照: references/annotations-and-features.md

次の項目については、このリファレンスを参照してください。

  • 注釈。
  • ドーナツの中央ラベル。
  • ポイントの分離。
  • ポイントのグループ化。
  • 空のポイントの処理。
  • ポイントの色マッピング。
  • グラデーションの塗りつぶし。
  • 開始角度と終了角度。
  • 円グラフの中央位置。
  • ファンネルのネック設定。
  • ピラミッドのモード。
カスタマイズとスタイル設定

📄 参照: references/customization-and-styling.md

次の項目については、このリファレンスを参照してください。

  • 内部テーマ。
  • パレット。
  • 系列の塗りつぶし。
  • 枠線。
  • 不透明度。
  • 背景。
  • タイトルとサブタイトル。
  • アプリケーションが管理する CSS。
  • レスポンシブな寸法。
  • 検証済みの印刷およびエクスポート機能。
アクセシビリティと高度な機能

📄 参照: references/accessibility-and-advanced.md

次の項目については、このリファレンスを参照してください。

  • セマンティックな説明。
  • 常時利用できるテキストによる代替情報。
  • セマンティックなデータテーブル。
  • アクセシビリティの設定。
  • 系列の説明。
  • フォーカスの視認性。
  • キーボードとスクリーンリーダーによるテスト。
  • 動的な更新。
  • アニメーション。
  • パフォーマンス。
  • リモートデータ。
  • クリーンアップ。
  • トラブルシューティング。

通常の直交座標系グラフの API をコピーする場合は、集積グラフ固有のモジュールとモデルで検証してから使用してください。

機能モジュールのリファレンス

実装に必要なモジュールのみをインポートして注入してください。

Pie and Doughnut -> PieSeries
Funnel           -> FunnelSeries
Pyramid          -> PyramidSeries
Data labels      -> AccumulationDataLabel
Legend           -> AccumulationLegend
Tooltip          -> AccumulationTooltip
Selection        -> AccumulationSelection
Highlight        -> AccumulationHighlight
Annotations      -> AccumulationAnnotation
Print            -> Validated Accumulation Chart print module
Image export     -> Validated Accumulation Chart image-export module
PDF export       -> Validated Accumulation Chart PDF-export module

オプションのモジュール名は、インストール済みの @syncfusion/ej2-charts の宣言で確認してください。

TypeScript のモジュール注入

ラベル、凡例、ツールチップを備えた円グラフには、次のものが必要です。

import {
    AccumulationChart,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip,
    PieSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PieSeries,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip
);

最小構成の円グラフには、次のものが必要です。

import {
    AccumulationChart,
    PieSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PieSeries
);

ファンネルグラフには、次のものが必要です。

import {
    AccumulationChart,
    FunnelSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    FunnelSeries
);

ピラミッドグラフには、次のものが必要です。

import {
    AccumulationChart,
    PyramidSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PyramidSeries
);

インポートと注入の内容を一致させてください。

通常のグラフのツールチップモジュールは使用しないでください。

Tooltip

次のものを使用してください。

AccumulationTooltip

ホストと寸法

一貫したホストを使用してください。

<div id="accumulation-chart"></div>

測定可能な寸法を指定してください。

.chart-wrapper {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
}

#accumulation-chart {
    width: 100%;
    min-height: 500px;
}

ホストを検証してください。

const host:
    HTMLElement | null =
        document.getElementById(
            'accumulation-chart'
        );

if (!host) {
    throw new Error(
        'The Accumulation Chart host "#accumulation-chart" was not found.'
    );
}

明示的な構築とアタッチを推奨します。

const chart:
    AccumulationChart =
        new AccumulationChart({
            // Configuration
        });

chart.appendTo(
    host
);

データモデルと検証

型付きモデルを使用してください。

interface CategoryShare {
    category: string;
    value: number;
    label: string;
}

意味のあるデータを定義してください。

const chartData:
    CategoryShare[] = [
        {
            category:
                'January',
            value:
                22,
            label:
                'January: 22%'
        },
        {
            category:
                'February',
            value:
                24,
            label:
                'February: 24%'
        },
        {
            category:
                'March',
            value:
                26,
            label:
                'March: 26%'
        },
        {
            category:
                'April',
            value:
                28,
            label:
                'April: 28%'
        }
    ];

レンダリング前に検証してください。

const validateCategoryShares = (
    data:
        CategoryShare[],
    requirePercentageTotal:
        boolean
): void => {
    if (
        data.length ===
        0
    ) {
        throw new Error(
            'The Accumulation Chart requires at least one data point.'
        );
    }

    const categories:
        Set<string> =
            new Set<string>();

    let positiveValueFound:
        boolean =
            false;

    let total:
        number =
            0;

    data.forEach(
        (
            item:
                CategoryShare,
            index:
                number
        ): void => {
            const category:
                string =
                    item.category.trim();

            if (!category) {
                throw new Error(
                    'Data point ' +
                    index +
                    ' requires a category.'
                );
            }

            if (
                categories.has(
                    category
                )
            ) {
                throw new Error(
                    'Duplicate category: ' +
                    category
                );
            }

            if (
                !Number.isFinite(
                    item.value
                ) ||
                item.value < 0
            ) {
                throw new Error(
                    'Data point "' +
                    category +
                    '" requires a finite nonnegative value.'
                );
            }

            if (
                item.value > 0
            ) {
                positiveValueFound =
                    true;
            }

            if (
                !item.label.trim()
            ) {
                throw new Error(
                    'Data point "' +
                    category +
                    '" requires a label.'
                );
            }

            total +=
                item.value;

            categories.add(
                category
            );
        }
    );

    if (
        !positiveValueFound
    ) {
        throw new Error(
            'At least one data point must have a positive value.'
        );
    }

    if (
        requirePercentageTotal &&
        Math.abs(
            total -
            100
        ) >
        0.0001
    ) {
        throw new Error(
            'Percentage data must total 100.'
        );
    }
};

検証を呼び出してください。

validateCategoryShares(
    chartData,
    true
);

グラフにパーセンテージではなく生の値を表示する場合は、合計を 100 にする必要はありません。

クイックスタートの例

TypeScript
import {
    AccumulationChart,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip,
    PieSeries
} from '@syncfusion/ej2-charts';

interface CategoryShare {
    category: string;
    value: number;
    label: string;
}

AccumulationChart.Inject(
    PieSeries,
    AccumulationDataLabel,
    AccumulationLegend,
    AccumulationTooltip
);

const chartData:
    CategoryShare[] = [
        {
            category:
                'January',
            value:
                22,
            label:
                'January: 22%'
        },
        {
            category:
                'February',
            value:
                24,
            label:
                'February: 24%'
        },
        {
            category:
                'March',
            value:
                26,
            label:
                'March: 26%'
        },
        {
            category:
                'April',
            value:
                28,
            label:
                'April: 28%'
        }
    ];

const host:
    HTMLElement | null =
        document.getElementById(
            'accumulation-chart'
        );

if (!host) {
    throw new Error(
        'The Accumulation Chart host was not found.'
    );
}

const chart:
    AccumulationChart =
        new AccumulationChart({
            width:
                '100%',

            height:
                '500px',

            theme:
                'Fluent2',

            title:
                'Monthly Distribution',

            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie',
                    name:
                        'Distribution',

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Outside',
                        name:
                            'label'
                    }
                }
            ],

            tooltip: {
                enable:
                    true
            },

            legendSettings: {
                visible:
                    true,
                position:
                    'Right'
            }
        });

chart.appendTo(
    host
);

この集積グラフの簡潔な例だけを使用する場合、Syncfusion のテーマスタイルシートを別途用意する必要はありません。

完全バンドルを使用した JavaScript

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <meta
        name="viewport"
        content="width=device-width, initial-scale=1.0"
    >

    <title>EJ2 Accumulation Chart</title>

    <script src="https://cdn.syncfusion.com/ej2/34.2.2/dist/ej2.min.js"></script>

    <style>
        #accumulation-chart {
            width: 100%;
            min-height: 500px;
        }
    </style>
</head>

<body>
    <div id="accumulation-chart"></div>

    <script>
        if (
            typeof window.ej ===
                'undefined' ||
            !window.ej.charts ||
            !window.ej.charts.AccumulationChart
        ) {
            throw new Error(
                'The EJ2 Accumulation Chart global bundle was not loaded.'
            );
        }

        var chartData = [
            {
                category:
                    'January',
                value:
                    22,
                label:
                    'January: 22%'
            },
            {
                category:
                    'February',
                value:
                    24,
                label:
                    'February: 24%'
            },
            {
                category:
                    'March',
                value:
                    26,
                label:
                    'March: 26%'
            },
            {
                category:
                    'April',
                value:
                    28,
                label:
                    'April: 28%'
            }
        ];

        var chart =
            new ej.charts.AccumulationChart({
                width:
                    '100%',

                height:
                    '500px',

                theme:
                    'Fluent2',

                title:
                    'Monthly Distribution',

                series: [
                    {
                        dataSource:
                            chartData,
                        xName:
                            'category',
                        yName:
                            'value',
                        type:
                            'Pie',
                        name:
                            'Distribution',

                        dataLabel: {
                            visible:
                                true,
                            position:
                                'Outside',
                            name:
                                'label'
                        }
                    }
                ],

                tooltip: {
                    enable:
                        true
                },

                legendSettings: {
                    visible:
                        true,
                    position:
                        'Right'
                }
            });

        chart.appendTo(
            '#accumulation-chart'
        );
    </script>
</body>
</html>

完全なグローバルバンドルに対して AccumulationChart.Inject(...) を呼び出さないでください。

一般的なパターン

凡例付きの基本的な円グラフ

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie'
                }
            ],

            legendSettings: {
                visible:
                    true,
                position:
                    'Right'
            }
        });

chart.appendTo(
    '#accumulation-chart'
);

中央ラベル付きのドーナツグラフ

innerRadius を指定した Pie シリーズを使用します。

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pie',
                    innerRadius:
                        '40%'
                }
            ],

            centerLabel: {
                text:
                    'Sales',
                hoverTextFormat:
                    '${point.x}: ${point.y}'
            }
        });

chart.appendTo(
    '#accumulation-chart'
);

次の設定は使用しないでください。

type:
    'Doughnut'

中央ラベルは、Pie または Doughnut 形式のビジュアライゼーションを対象としています。

ファネルチャート

import {
    AccumulationChart,
    AccumulationDataLabel,
    FunnelSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    FunnelSeries,
    AccumulationDataLabel
);

interface FunnelStage {
    stage: string;
    users: number;
    label: string;
}

const stageData:
    FunnelStage[] = [
        {
            stage:
                'Visited',
            users:
                1000,
            label:
                'Visited: 1,000'
        },
        {
            stage:
                'Downloaded',
            users:
                760,
            label:
                'Downloaded: 760'
        },
        {
            stage:
                'Subscribed',
            users:
                420,
            label:
                'Subscribed: 420'
        },
        {
            stage:
                'Renewed',
            users:
                190,
            label:
                'Renewed: 190'
        }
    ];

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        stageData,
                    xName:
                        'stage',
                    yName:
                        'users',
                    type:
                        'Funnel',
                    width:
                        '70%',
                    height:
                        '80%',
                    neckWidth:
                        '15%',
                    neckHeight:
                        '5%',
                    gapRatio:
                        0.08,

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Inside',
                        name:
                            'label'
                    }
                }
            ]
        });

chart.appendTo(
    '#accumulation-chart'
);

ファネルチャートでは、コンバージョン率は自動計算されません。必要な場合は、アプリケーションコードで率を計算してください。

ピラミッドチャート

import {
    AccumulationChart,
    AccumulationDataLabel,
    PyramidSeries
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    PyramidSeries,
    AccumulationDataLabel
);

const chart:
    AccumulationChart =
        new AccumulationChart({
            series: [
                {
                    dataSource:
                        chartData,
                    xName:
                        'category',
                    yName:
                        'value',
                    type:
                        'Pyramid',
                    pyramidMode:
                        'Linear',
                    gapRatio:
                        0.05,

                    dataLabel: {
                        visible:
                            true,
                        position:
                            'Inside',
                        name:
                            'label'
                    }
                }
            ]
        });

chart.appendTo(
    '#accumulation-chart'
);

次のように、検証済みの Pyramid モードを使用します。

Linear
Surface

次の設定は追加しないでください。

reverse:
    true

ただし、インストール済みの Pyramid モデルが明示的にサポートしている場合を除きます。

データラベル

次をインポートして挿入します。

import {
    AccumulationDataLabel
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationDataLabel
);

ラベルはシリーズ内で設定します。

dataLabel: {
    visible:
        true,
    position:
        'Outside',
    name:
        'label'
}

Accumulation のデータラベルをチャートのルートで設定しないでください。

アプリケーションの値がパーセンテージを表す場合、またはパーセンテージが正しく計算されている場合にのみ、パーセンテージラベルを使用してください。

ツールチップ

次をインポートして挿入します。

import {
    AccumulationTooltip
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationTooltip
);

次を有効にします。

tooltip: {
    enable:
        true,
    format:
        '${point.x}: ${point.y}'
}

実行可能な HTML は、サポートされており、必要な場合にのみ使用できます。

format:
    '${point.x}: <b>${point.y}</b>'

エンコードされた HTML は使用しないでください。

format:
    '${point.x}: &lt;b&gt;${point.y}&lt;/b&gt;'

値がパーセンテージでない限り、% を追加しないでください。

選択

次をインポートして挿入します。

import {
    AccumulationSelection
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationSelection
);

インストール済みの Accumulation Chart モデルで検証された選択モードを設定します。

selectionMode:
    'Point'

選択パターンと複数選択のサポートについて、ドキュメントに記載する前に検証してください。

通常の Cartesian Chart のシリーズ選択の動作が、同じように適用されると想定しないでください。

ハイライト表示

次をインポートして挿入します。

import {
    AccumulationHighlight
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationHighlight
);

インストール済みパッケージでサポートされているモードとパターンのみを設定します。

コントラストや読みやすさが低下する場合は、装飾だけを目的としてハイライト表示を有効にしないでください。

注釈

次をインポートして挿入します。

import {
    AccumulationAnnotation
} from '@syncfusion/ej2-charts';

AccumulationChart.Inject(
    AccumulationAnnotation
);

注釈と Doughnut の中央ラベルは、異なる機能です。

チャートに対する相対位置に配置するコンテキスト用の HTML コンテンツには、注釈を使用します。

Doughnut 形式の中央に表示するコンテンツには、centerLabel を使用します。

必須情報の唯一の情報源として、注釈のコンテンツを使用しないでください。

ポイントの色

必要な場合は、データからポイントの色を割り当てます。

interface CategoryShare {
    category: string;
    value: number;
    color: string;
}

series: [
    {
        dataSource:
            chartData,
        xName:
            'category',
        yName:
            'value',
        pointColorMapping:
            'color',
        type:
            'Pie'
    }
]

通常の Chart の marker プロパティを、Accumulation のあらゆるシリーズで使用できるオプションとして記載しないでください。

Pie、Funnel、Pyramid のポイントは、Cartesian のマーカーではなくセグメントとして描画されます。

ポイントの分離

ポイントの分離を有効にします。

series: [
    {
        type:
            'Pie',
        explode:
            true,
        explodeIndex:
            0,
        explodeOffset:
            '10%'
    }
]

分離は控えめに使用してください。セグメントを過度に離すと、全体を解釈しにくくなることがあります。

Funnel と Pyramid の間隔の検証

gapRatio を検証します。

const validateGapRatio = (
    value:
        number
): void => {
    if (
        !Number.isFinite(
            value
        ) ||
        value < 0 ||
        value > 1
    ) {
        throw new Error(
            'The gap ratio must be between 0 and 1.'
        );
    }
};

内部テーマとアプリケーション CSS

組み込みのチャートテーマを適用します。

theme:
    'Fluent2'

ここで取り上げる Accumulation Chart の例だけを目的とする場合、別の Syncfusion テーマパッケージやスタイルシートは必要ありません。

次の用途には、アプリケーション独自の CSS を使用します。

  • ホストの寸法。
  • ページの背景。
  • カードレイアウト。
  • テキストによる概要。
  • データテーブル。
  • 外部ボタン。
  • レスポンシブな間隔。

例:

.chart-card {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
    padding: 20px;
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
}

#accumulation-chart {
    width: 100%;
    min-height: 500px;
}

選択したテーマが、インストール済みの Accumulation Chart テーマモデルに対応していることを検証してください。

動的なデータ更新

シリーズのデータソースを置き換えます。

chart.series[0]
    .dataSource =
        updatedData;

chart.dataBind();

タイトルを更新します。

chart.title =
    'Updated Distribution';

chart.dataBind();

変更をまとめて適用します。

chart.title =
    'Updated Distribution';

chart.series[0]
    .dataSource =
        updatedData;

chart.dataBind();

通常のプロパティ変更には dataBind() を使用します。

次の場合は refresh() を使用します。

  • ホストの寸法が変更された場合。
  • 非表示だった親要素が表示された場合。
  • チャートの種類が大幅に変更された場合。
  • レイアウト全体の再計算が必要な場合。

アクセシビリティに関するガイダンス

次の方法で、アクセシブルな実装をサポートします。

  • 意味的な見出し。
  • 簡潔なチャートの説明。
  • 常時表示されるテキストによる概要。
  • 意味的なデータテーブル。
  • 意味のあるカテゴリラベル。
  • 十分なコントラスト。
  • 外部コントロールの視認できるフォーカス表示。
  • キーボードとスクリーンリーダーでのテスト。
  • ブラウザーのズームとレスポンシブなリフローのテスト。
  • 補足コンテンツとしてのツールチップ。
  • 色だけに頼らない情報伝達手段。

自動的に WCAG に準拠すると主張しないでください。

次のものだけに頼らないでください。

  • セグメントの色。
  • セグメントの角度。
  • スライスの面積。
  • ファネルの幅。
  • ピラミッド内の位置。
  • ホバー時のツールチップ。

正確な値を示す表を用意します。

<table>
    <caption>
        Category distribution
    </caption>

    <thead>
        <tr>
            <th scope="col">Category</th>
            <th scope="col">Value</th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <th scope="row">January</th>
            <td>22%</td>
        </tr>
    </tbody>
</table>

高度なアクセシビリティプロパティを設定する前に、チャートレベルとシリーズレベルのアクセシビリティモデルを、インストール済みのパッケージに照らして検証してください。

パフォーマンスとクリーンアップ

  • 描画前にデータを検証します。
  • カテゴリー数を制限します。
  • 必要に応じて、少数のポイントをグループ化します。
  • ツールチップのテンプレートはシンプルに保ちます。
  • データラベルのテンプレートはシンプルに保ちます。
  • 不要なアニメーションは避けます。
  • 空の値やゼロ値を意図的に処理します。
  • 更新をまとめて行います。
  • 関連する変更の後に dataBind() を一度だけ呼び出します。
  • refresh() はレイアウトの再計算にのみ使用します。
  • アプリケーションが所有するリスナーを削除します。
  • タイマーをクリアします。
  • 保留中のリモートリクエストをキャンセルします。
  • 動的なホストが削除されたときに、チャートを破棄します。
chart.destroy();

実行時検証チェックリスト

✅ @syncfusion/ej2-charts is installed.
✅ No external theme package is required solely for AccumulationChart.
✅ A supported built-in theme is configured through theme.
✅ AccumulationChart is imported.
✅ PieSeries is injected for Pie and Doughnut.
✅ FunnelSeries is injected for Funnel.
✅ PyramidSeries is injected for Pyramid.
✅ AccumulationDataLabel is injected when labels are visible.
✅ AccumulationLegend is injected when the legend is visible.
✅ AccumulationTooltip is injected when tooltips are enabled.
✅ AccumulationSelection is injected when selection is enabled.
✅ AccumulationHighlight is injected

コメント