🚀 新規事業

heatmap-chart

最終更新 2026年05月09日 / 40_新規事業/SCALE_Build/カタログ/機能集/heatmap-chart.md

ヒートマップ(曜日×時間)

用途

曜日×時間帯の活動量を色濃淡で可視化。GitHub の contribution graph 風。

特徴

  • 曜日×時間 の 7×24 グリッド
  • 色濃淡で量表現
  • ツールチップ
  • クリックで詳細

コード(コピペ用)

export function Heatmap({ data }: { data: { day: number; hour: number; value: number }[] }) {
  const max = Math.max(...data.map(d => d.value), 1);
  const get = (d: number, h: number) => data.find(x => x.day === d && x.hour === h)?.value ?? 0;
  const days = ['月','火','水','木','金','土','日'];
  return (
    <table style={{ borderCollapse: 'collapse', fontSize: '.65rem' }}>
      <thead><tr><th></th>{Array.from({length:24}).map((_,h) => <th key={h} style={{padding:'.15rem'}}>{h}</th>)}</tr></thead>
      <tbody>
        {days.map((dn, d) => (
          <tr key={d}>
            <td style={{padding:'.15rem .35rem', color:'#71717a'}}>{dn}</td>
            {Array.from({length:24}).map((_,h) => {
              const v = get(d, h);
              const a = v / max;
              return <td key={h} title={`${dn} ${h}時: ${v}`}
                style={{width:14, height:14, background:`rgba(165,180,252,${a})`, border:'1px solid rgba(255,255,255,.05)'}} />;
            })}
          </tr>
        ))}
      </tbody>
    </table>
  );
}

使い方

対象プロジェクトに該当ファイルをコピーして、props を流し込むだけ。

注意事項

  • 依存パッケージを忘れず追加