円グラフ
目的
このコンポーネントを使用すると、円グラフとドーナツグラフを作成できます。デフォルトでは、ツールチップが有効になっています。ソースデータはdataフィールドに配列として渡され、表示されるグループはseriesフィールドにオブジェクトとして渡されます。セクターのサイズと色は、それぞれseriesフィールドとcolorフィールドで定義されます。ドーナツグラフのセクターを作成するには、innerとouterというシリーズフィールドを指定する必要があります。これらは、内側と外側の半径を設定します。利用可能なすべての設定は、TPieConfig型で確認できます。
使用法
jsx
import { useState, useEffect } from 'react';
import { usePie } from 'effcharts/pie';
// カスタムWebコンポーネントを使用する前に定義してください
// 注意:SSRの場合、ブラウザがドキュメント本文を解析する前に呼び出す必要があります
// そのため、ドキュメントのヘッダーに別途定義スクリプトを追加する必要がある場合があります
const { observe } = usePie();
export const App = () => {
const ref = useRef();
const [config, setConfig] = useState(JSON.stringify({
data: [
{
name: 'Page A',
uv: 4000,
pv: 2400,
color: 'oklch(0.61 0.1 213.72)'
},
{
name: 'Page B',
uv: 3000,
pv: 1398,
color: 'oklch(0.54 0.18 322.34)'
},
{
name: 'Page C',
uv: 2000,
pv: 9800,
color: 'oklch(0.49 0.13 268.85)'
}
],
series: {
def: {
field: 'uv',
color: 'color',
title: 'Default',
inner: 0.55,
outer: 1
},
sec: {
field: 'pv',
color: 'color',
title: 'Secondary',
outer: 0.5,
angle: 180
}
}
}));
useEffect(() => {
// Webコンポーネントのイベントを監視できます
const unobserve = observe((e) => {
// イベントハンドラ
}, ref.current);
// そして、あなたは観察を中止することができます
return () => unobserve();
}, []);
// JSXでWebコンポーネントを使用するだけです
return <div ref={ref}>
<effcharts-pie>
{config}
</effcharts-pie>
</div>;
}型
IPieChartAttrsインターフェースを使用してWebコンポーネントを宣言できます。また、TPieConfig型を使用してチャートの設定を検証することもできます。
tsx
import { HTMLAttributes } from 'react';
import { IPieChartAttrs, TPieConfig } from 'effcharts/pie';
type CustomElement<T> = Partial<T & HTMLAttributes<T> & { children: any }>;
// effchartsコンポーネントを宣言する
declare module 'react' {
namespace JSX {
interface IntrinsicElements {
'effcharts-pie': CustomElement<IPieChartAttrs>;
}
}
}
// 設定を準備する
const config = {
data: [
{
name: 'Page A',
uv: 4000,
pv: 2400,
color: 'oklch(0.61 0.1 213.72)'
},
{
name: 'Page B',
uv: 3000,
pv: 1398,
color: 'oklch(0.54 0.18 322.34)'
},
{
name: 'Page C',
uv: 2000,
pv: 9800,
color: 'oklch(0.49 0.13 268.85)'
}
],
series: {
def: {
field: 'uv',
color: 'color',
title: 'Default',
inner: 0.55,
outer: 1
},
sec: {
field: 'pv',
color: 'color',
title: 'Secondary',
outer: 0.5,
angle: 180
}
}
} satisfies TPieConfig;