Blog>
Snippets

Adding Interactive Features to React Charts

Explain how to add interactive elements, like tooltips and zoom functionality, to a scatter plot chart using TanStack React Charts for better user engagement.
import { Chart } from 'react-charts';
import React from 'react';
First, import the necessary modules from react and react-charts.
function MyScatterPlot({ data }) {
  const series = React.useMemo(() => ({
    type: 'bubble',
    showPoints: true
  }), []);

  const axes = React.useMemo(() => [
    { primary: true, type: 'linear', position: 'bottom' },
    { type: 'linear', position: 'left' }
  ], []);

  const tooltip = React.useMemo(() => ({
    render: ({ datum }) => `(${datum.primary}, ${datum.secondary})`
  }), []);

  // More configurations can be added here

  return (
    <Chart data={data} series={series} axes={axes} tooltip={tooltip} />
  );
}
This function component creates a scatter plot (bubble chart) with tooltips showing the data points values. The 'data' prop must follow the react-charts data model.
// To add zoom functionality, we need to manage chart's state
const [zoomState, setZoomState] = React.useState();

function handleUpdateZoomState(updatedZoomState) {
  setZoomState(updatedZoomState);
}

// In the <Chart> component add:
// zoom={zoomState}
// onUpdateZoomState={handleUpdateZoomState}
Includes a state to manage zoom level and a handler function to update this state. Attach these to the <Chart> component to enable zoom functionality.