The lightweight React component for @antv/g2 5.0, which is based on the Spec API.
$ npm install @berryv/g2-react
import React from "react"; import { Chart } from "@berryv/g2-react"; export function Demo() { return ( <Chart options={{ type: "interval", width: 640, height: 480, data: [ { genre: "Sports", sold: 275 }, { genre: "Strategy", sold: 115 }, { genre: "Action", sold: 120 }, { genre: "Shooter", sold: 350 }, { genre: "Other", sold: 150 }, ], encode: { x: "genre", y: "sold" }, }} /> ); }Property Description Type Default options the options for the visualization, say
chart.options(options)
G2options
| null
- renderer the renderer of @antv/g canvas ChartOptions
- style the style of the container CSSProperties
- onInit the callback called after the chart instantiating Function
- ref the ref for the chart instance ChartRef
-
For more examples for props.options
, see each G2 example and click the "Spec Tab".
import React from "react"; import { Chart } from "@berryv/g2-react"; import { Renderer } from "@antv/g-svg"; export function Demo() { const renderer = useMemo(() => new Renderer(), []); return ( <Chart // Set renderer to SVG, optional. renderer={renderer} options={{ type: "interval", autoFit: true, // Fit the container. data: [ { genre: "Sports", sold: 275 }, { genre: "Strategy", sold: 115 }, { genre: "Action", sold: 120 }, { genre: "Shooter", sold: 350 }, { genre: "Other", sold: 150 }, ], encode: { x: "genre", y: "sold" }, }} /> ); }
Using useMemo
to define a computed options with data as a decency, this allows rerendering chart after the data updating.
import React, { useState, useMemo } from "react"; import { Chart } from "@berryv/g2-react"; export function Demo() { const [data, setData] = useState(null); // The options will update after data updating. const options = useMemo( () => ({ type: "interval", data, encode: { x: "genre", y: "sold" }, }), [data] ); useEffect(() => { // Mock the fetch delay. setTimeout(() => { // Update the data. setData([ { genre: "Sports", sold: 275 }, { genre: "Strategy", sold: 115 }, { genre: "Action", sold: 120 }, { genre: "Shooter", sold: 350 }, { genre: "Other", sold: 150 }, ]); }, 1000); }); return <>{data === null ? <p>Loading...</p> : <Chart options={options} />}</>; }
<Chart/>
exposes the ref for the G2 chart instance, which can be used to handle events or get some instances, such as scale, coordinate, etc,.
import React, { useRef, useEffect } from "react"; import { ChartEvent } from "@antv/g2"; import { Chart } from "@berryv/g2-react"; export function Demo() { const chartRef = useRef(); function onInit() { const chart = chartRef.current; // Listen input events. chart.on("plot:mouseover", () => {}); // Listen lifecycle events. chart.on(ChartEvent.AFTER_RENDER, () => { // Emit to init the state of highlight interaction. chart.emit("element:highlight", { data: { data: { genre: "Sports" }, }, }); }); } return <Chart ref={chartRef} onInit={onInit} />; }
With the register
API of G2, you can customize visual component and using it in options, such as customizing a triangle shape for bar chart:
import React, { useRef, useEffect } from "react"; import { register } from "@antv/g2"; // Register a triangle shape for interval globally. register("shape.interval.triangle", (style, context) => { const { document } = context; return (P, value, defaults) => { const { color: defaultColor } = defaults; const [p0, p1, p2, p3] = P; const pm = [(p0[0] + p1[0]) / 2, p0[1]]; const { color = defaultColor } = value; const group = document.createElement("g"); const polygon = document.createElement("polygon", { style: { ...style, fill: color, points: [pm, p2, p3], }, }); group.appendChild(polygon); return group; }; }); export function Demo() { return ( <Chart options={{ type: "interval", data: [ { genre: "Sports", sold: 275 }, { genre: "Strategy", sold: 115 }, { genre: "Action", sold: 120 }, { genre: "Shooter", sold: 350 }, { genre: "Other", sold: 150 }, ], encode: { x: "genre", y: "sold", shape: "triangle", // Use the custom shape. }, }} /> ); }
Define the css styles of the container:
import React from "react"; import { Chart } from "@berryv/g2-react"; export function Demo() { // ... return ( <Chart options={{ autoFit: true }} style={{ width: 800, height: 600, background: "#eee", padding: "1em", borderRadius: "0.5em", }} /> ); }
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4