hy clear Blog

React + Rechartsで円グラフの中心に文字を入れる

2024/07/19

2024/07/19

📰 アフィリエイト広告を利用しています

こんな感じのグラフ作るとき

コード例

function App() {
  const data = [
    { name: 'win', value: 100, color: "#bbebed", dark: "#1e4e4f" },
    { name: 'lose', value: 50, color: "#ffdad6", dark: "#93000a" }
  ];
  const [dark, setDark] = useState(false)

  useEffect(() => {
    //機器のダークモードを取得
    setDark(window.matchMedia('(prefers-color-scheme: dark)').matches)
  }, [])

  return (
    <div className='w-28 text-center'>
      <p>Hello</p>
      {/* 親要素とChartの大きさを合わせる*/}
      <div className=" relative w-28 h-28">
        <PieChart width={112} height={112}>
          <Pie
            data={data}
            dataKey="value"
            nameKey="name"
            innerRadius={35} // 円の内側の
            outerRadius={45}>
            {data.map((entry) =>
              // バーに色を付ける
              <Cell key={entry.name} fill={dark ? entry.dark : entry.color} />)
            }
          </Pie>
        </PieChart>
        <div className=" absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col" >
          <p className=" text-red-400 text-sm">win 100</p>
          <p className=" text-neutral-500 text-sm">lose 50</p>
        </div>
      </div>
    </div>
  )
}