Pipeline Stages in React

Using ApexCharts with React

This Pipeline Stages example wires ApexCharts into React through the react-apexcharts component.

Install it with npm install react-apexcharts apexcharts, then mount the chart with <Chart type="..." options={options} series={series} />.

React charts guide
import React from 'react'
import ReactApexChart from 'react-apexcharts'
import './styles.css'

// This demo also loads: https://cdn.jsdelivr.net/npm/apexcharts/dist/unit-shapes.js

const ApexChart = () => {
  const [state, setState] = React.useState({
    series: [3600, 2000, 1000, 600],
    options: {
      chart: {
        type: 'unit',
        height: 470,
        animations: {
          enabled: true,
          speed: 900,
        },
      },
      labels: ['Leads', 'Qualified', 'Proposal', 'Closed won'],
      colors: ['#7FC0DE', '#219EBC', '#0E7C7B', '#023047'],
      plotOptions: {
        unit: {
          layout: 'custom',
          // One of the shapes in apexcharts/unit-shapes.
          positions: 'funnel',
          transition: 'flow',
          unitValue: 8,
          clusterLabels: {
            // Outer labels: each band is named in the margin with a leader line to its
            // own dots, so the crowd reads without a legend.
            external: {
              show: true,
            },
          },
        },
      },
      legend: {
        show: false,
      },
    },
  })

  return (
    <div>
      <div className="wrap">
        <h1>7,200 leads, one dot per 8</h1>
        <p>
          A funnel shaped crowd, not a funnel chart. The dots are handed out in
          row order from the top, so the stages stack down the shape widest
          first and the last one lands in the neck. Every dot is still one lead.
        </p>

        <div className="chart-wrap">
          <div id="chart">
            <ReactApexChart
              options={state.options}
              series={state.series}
              type="unit"
              height={470}
            />
          </div>
        </div>

        <p className="note">1 dot = 8 leads</p>
      </div>
    </div>
  )
}

export default ApexChart