@nexusui/echarts-utility
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

NexusUI Echarts Utility

This package includes custom NexusUI themes for Apache Echarts as well as several related utilities to simplify your charting experience.

  • We provide two themes, light and dark theme, Our themes include styles for:
    • Layout (title, axis, grid, legend) * Layout (title / axis/ grid /legend position and space)
    • Axes (label, line, ticks)
    • Color Palette (default sequence colors)
  • Utilities
    • Custom Tooltips formatters
    • Custom Zoom (Not yet)

Installation

Add the required dependencies to your project:

# With yarn
yarn add echarts echarts-for-react @nexusui/echarts-utility

# With npm
npm install echarts echarts-for-react @nexusui/echarts-utility

If your project does not already contain the MUI components and NexusUI theme, you must also install @mui/material and @nexusui/theme.

Usage

Basic usage

The ReactEChartsWithTheme component automatically handles theming for both light and dark themes, so you only need to configure the other echarts related props.

import { ReactEChartsWithTheme } from '@nexusui/echarts-utility';
import * as echarts from 'echarts';

// option for echarts
const option = {
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: 'line'
    }
  ]
};

export default () => {
  return <ReactEChartsWithTheme echarts={echarts} option={option} />
}

Minimal bundle usage

If your project only uses a few chart types, you can reduce your overall bundle size by only importing the specific modules you need.

import { ReactEChartsWithTheme } from '@nexusui/echarts-utility';
import * as echarts from 'echarts/core';
import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, ToolboxComponent } from 'echarts/components';
import type {
  TitleComponentOption,
  TooltipComponentOption,
  GridComponentOption,
  LegendComponentOption,
  ToolboxComponentOption
} from 'echarts/components';
import { LineChart } from 'echarts/charts';
import type { LineSeriesOption } from 'echarts/charts';
import { UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';

// Register the required components, it will generate minimal bundle
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  LegendComponent,
  LineChart,
  CanvasRenderer,
  UniversalTransition,
  ToolboxComponent
]);

// Combine an Option type with only required components and charts via ComposeOption
type ECOption = echarts.ComposeOption<
  TitleComponentOption | TooltipComponentOption | GridComponentOption | LegendComponentOption | LineSeriesOption | ToolboxComponentOption
>;

// option for echarts
const option: ECOption = {
  title: {
    text: 'Sample Line chart',
  },
  toolbox: {
    show: true,
    feature: {
      dataView: {},
      saveAsImage: {}
    },
  },
  tooltip: {
    trigger: 'axis',
  },
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: 'line'
    }
  ]
};

export default () => {
  return <ReactEChartsWithTheme echarts={echarts} option={option} />
}

Custom Tooltips formatter

Usage

import { getLineTooltipFormatter, getBarTooltipFormatter } from '@nexusui/echarts-utility';

export const options = {
  // tooltip config options
  tooltip: {
    formatter: getLineTooltipFormatter({ xAxisTitle: 'Strain / mm/mm', yAxisTitle: 'Stress / MPa' })
  },
  //...other options
};

You can also use a param mapper to show the values you want in the tooltip

import { getTooltipFormatter } from '@nexusui/echarts-utility';

const paramMapper = (param) => {
  return {
    seriesColor: param.color,
    seriesName: param.seriesName,
    xAxisValue: param.value[0],
    yAxisValue: param.value[2]
  };
};

const additionalParams = { xAxisTitle: 'Strain / mm/mm', yAxisTitle: 'Stress / MPa' }
export const options = {
  // tooltip config options
  tooltip: {
    formatter: getTooltipFormatter(paramMapper,additionalParams)
  },
  //...other options
};

If you need further configuration abilities, you can use the axisDict attribute as follows. The keys of axisDict are items like axisTitle and the values of axisDict are things like axisValue.

import { getTooltipFormatter } from '@nexusui/echarts-utility';

const paramMapper = (param) => {
  return {
    seriesColor: param.color,
    seriesName: param.seriesName,
    axisDict: {
      [param.name]: `${param.value}(${param.percent}%)`
    }
  };
};
export const options = {
  // tooltip config options
  tooltip: {
    formatter: getTooltipFormatter(paramMapper)
  },
  //...other options
};

Package Sidebar

Install

npm i @nexusui/echarts-utility

Weekly Downloads

169

Version

0.0.5

License

BSD-3-Clause

Unpacked Size

414 kB

Total Files

6

Last publish

Collaborators

  • joebochill
  • willparallax
  • hexagon-nexus