BarChart

水平棒グラフコンポーネント。データの比較を直感的に表示。

プレビュー

React 85%(100%)、Vue 62%(73%)、Angular 45%(53%)、Svelte 38%(45%)、Solid 22%(26%)
React85%
Vue62%
Angular45%
Svelte38%
Solid22%

使いどころ

使う場面

  • 項目ごとの大きさを比べる(チャネル別の流入数、部署別の人数)。棒の長さで比べるので、ラベルが長くても読める
  • 項目数は 3〜10 個。値の大きい順に並べて渡すと、ランキングとして読める
  • 複数の BarChart を並べて比べるときは、max を共通の値にそろえる。そろえないと、棒の長さが比べられない

使わない場面

  • 時間の推移。LineChart か ColumnChart を使う
  • 全体に占める割合。DonutChart か CategoryBar を使う
  • 上位 N 件のリンク付きランキング。BarList を使う。系列が複数あるときは ColumnChart を使う

使い方

<BarChart
  aria-label="フレームワーク別人気度"
  data={[
    { label: "React", value: 85 },
    { label: "Vue", value: 62 },
  ]}
  formatValue={(v) => `${v}%`}
/>

プロパティ

名前型デフォルト説明
data必須BarChartItem[]なし{ label, value, color? } の配列
maxnumberなし最大値(省略時はデータの最大値)
formatValue(value: number) => stringなし値のフォーマット関数
aria-label必須stringなしグラフの名前(必須)。読み上げで何のグラフかを伝える

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

アクセシビリティ

  • aria-label は必須(型でも必須)。「チャネル別の流入数」のように、何を比べるグラフかを書く。無いと、読み上げで内容の見当がつかない
  • role="figure" になり、各項目の「ラベル 値(最大値に対する %)」が読み上げ用に入る。棒は aria-hidden で、ラベルと数値は画面にも文字で出る
  • 色は項目を区別するためではなく装飾。色の違いに意味を持たせるときは、ラベルでも伝える
  • キーボードでは操作できない(フォーカスされない)。読み上げと画面の文字で同じ情報が得られる

文言

  • ラベルは短い名詞(「自然検索」「広告」)。formatValue で単位を付ける(「1,240 件」)

関連するコンポーネント