スパークラインSparklineChartExperimental
密度の高いカード向けの小さな線・面・ステップチャートです。
プレビュー
状態とバリエーション
線表示
密度の高いカードで使うシンプルな傾向線です。
面表示
塗りを加えて傾向を強調します。
ステップ
段階的な変化やしきい値の推移に使います。
基準線
目標値や平均値を点線で表示します。
プロパティ
表は横にスクロールできます
| プロパティ | 型 | 初期値 | 説明 |
|---|---|---|---|
| data | Array<number | { label?: ReactNode; value: number }> | - | コンパクトなチャート幅に表示する数値トレンドです。 |
| variant | "line" | "area" | "step" | "line" | 線・面・ステップを切り替える SSOT 登録済みバリエーションです。 |
| referenceValue | number | - | 任意の点線基準値です。 |
| formatValue | (value: number) => ReactNode | - | 各値を整形します。関数propのため Client Component からのみ渡すこと(Server Component から渡すと next build が落ちる)。RSC 安全な整形には valueFormat を使う。 |
| valueFormat | "number" | "compact" | "integer" | Intl.NumberFormatOptions | - | シリアライズ可能な数値フォーマット=formatValue の RSC 安全な代替。formatValue 指定時は無視。en-US ロケール固定。(#338) |
使い方
import { SparklineChart } from "@gunjo/ui";
const data = [
{ label: "1月", value: 24 },
{ label: "2月", value: 28 },
{ label: "3月", value: 22 },
{ label: "4月", value: 36 },
{ label: "5月", value: 32 },
{ label: "6月", value: 44 },
{ label: "7月", value: 39 },
{ label: "8月", value: 52 },
{ label: "9月", value: 48 },
{ label: "10月", value: 57 },
{ label: "11月", value: 51 },
{ label: "12月", value: 64 },
];
export function MonthlyTrendSparklineVariants() {
return (
<div className="grid gap-6">
<SparklineChart data={data} />
<SparklineChart data={data} variant="area" color="success" />
<SparklineChart
data={data}
variant="step"
referenceValue={50}
referenceLabel="目標"
/>
</div>
);
}設計の判断
- 縦軸の範囲を固定する指定が、まだありません。
SparklineChartは常に、そのデータの最小値から最大値までで正規化します(referenceValueを渡すと、その値も範囲に入ります)。資料が最も起きやすい間違いに挙げる「並べたときにスケールがそろわない」を、この部品では防げません。同じ単位のスパークラインを並べて形を比べたいときは、minとmaxを持つLineChartに移ってください。 - 点ごとに、縦に貫く帯を置きました。当たり判定は点そのものではなく、その時点から次の時点までを縦いっぱいに覆う帯です。ホバーは図のどこでも近い時点を拾い、キーボードは帯を1つずつたどります。読み上げ名は「時点: 値」です。資料はスパークラインをフォーカス可能にしないよう薦めています(20行の一覧でタブ位置が 160 個になるためです)。GUNJO は、値がツールチップにしか無いことを重く見て帯を残しました。一覧に並べるときは、行が増えるぶんタブ位置も増えることを見込んでください。
- 点は、既定では出しません。
showDotsの既定はfalseです(LineChartはtrue)。スパークラインが伝えるのは向きだけなので、点を出すと小さな折れ線に近づいてしまいます。variant="step"は在庫や料金プランのように段階的に変わる値のためのもので、連続した値に使うと実際より急な変化に見えます。referenceLabelの既定は英語の「Reference」です。何の線かは、図の外の文字でも書いてください。
UIXHERO: スパークライン(Sparkline Chart)