DonutChart

SVGベースのドーナツチャート。凡例とセンターラベル付き。

プレビュー

9,000、デスクトップ 4820(54%)、モバイル 3200(36%)、タブレット 980(11%)
デスクトップ4820モバイル3200タブレット980

使いどころ

使う場面

  • 全体に占める構成比を見せる(支払い方法の内訳、ステータス別の件数)。合計が 100% になることが前提
  • 項目は 2〜5 個まで。centerLabel に合計や主役の数字を入れると、中央の余白が情報になる
  • ラベルと値を凡例に出し(showLegend は既定で true)、色と項目の対応を文字で読めるようにする

使わない場面

  • 項目が 6 個を超えるとき。色が識別できず、小さな弧は読めない。上位をまとめて「その他」にするか、BarChart を使う
  • 項目どうしの大小を正確に比べること。弧の長さは棒より比べにくい。BarChart を使う
  • 時間の推移や、合計にならない値。LineChart か ColumnChart を使う
  • 1 本の帯で構成比と目標線を見せたいとき。CategoryBar を使う

使い方

<DonutChart
  aria-label="デバイス別アクセス数"
  data={[
    { label: "デスクトップ", value: 4820 },
    { label: "モバイル", value: 3200 },
  ]}
  centerLabel="8,020"
/>

プロパティ

名前型デフォルト説明
data必須DonutChartSegment[]なし{ label, value, color? } の配列
sizenumber120SVGのサイズ(px)
strokeWidthnumber16リングの太さ
centerLabelstringなし中央に表示するテキスト
showLegendbooleantrue凡例を表示するか
aria-label必須stringなしグラフの名前(必須)。読み上げで何のグラフかを伝える

型と必須かどうかはソースの型定義から自動で生成しています。表にない HTML 標準の属性(className や aria-* など)も、ルート要素にそのまま渡せます。

アクセシビリティ

  • aria-label は必須。「支払い方法の内訳」のように書く。SVG は aria-hidden で、読み上げには centerLabel と「ラベル 値(%)」の一覧が入る
  • 色だけに頼らない。凡例にラベルと値を出し、showLegend を false にするときは、近くの文章や表で同じ数字を伝える
  • 凡例の値は元の値のまま(% ではない)。割合を見せたいときは、値を % で渡すか、centerLabel や周囲の文で補う
  • キーボードでは操作できない。同じ内容を読み上げの要約で伝える

文言

  • centerLabel は短く(「合計 1,240」「82%」)。長いと穴に収まらない

関連するコンポーネント