🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

Cake Chart is a javascript library to create interactive multi-layer pie charts.

Chart_Graph Core Java Script

Documentation

cake-chart

Interactive multi-layer pie chart

Demo

Webpack Chart

Install

> npm i -S cake-chart 

Simple Example

import CakeChart from 'cake-chart';  const TREE = {   value: 100,   label: 'SUM = 100',   children: [{     value: 50,     children: [{       value: 10     },     {       value: 20     }]   }, {     value: 30   }, {     value: 20   }] };  ...  render () {   return (     <CakeChart data={TREE} />   ); } 

Advanced Example

Tree Navigation

CakeChart is a quite dumb component that renders provided tree, but doesn't navigate through it, so you have to implement that part yourself. Which is not hard though.

const TREE = { ... };  /* finds parent of the selected node -    you can just store parent in the node itself, for example */ function findParentNode(node, child, parent = null) {   if (node === child) return parent;   for (let c of child.children || []) {     const p = findParent(node, c, child);     if (p) return p;   } }  class InteractiveCakeChart extends React.Component {   constructor(props) {     super(props);          this.state = {       selectedNode: TREE     }   }      render() {     return (       <CakeChart data={this.state.selectedNode}                  onClick={this.handleClick} />     );   }      handleClick = (node) => {     if (node === this.state.selectedNode) {       /* user clicked on the chart center - rendering parent node */       this.setState({ selectedNode: findParentNode(node, TREE) || TREE });     } else {       this.setState({ selectedNode: node });     }   } }

Customization

function getSliceProps(slice, props) {   return { ...props, fill: (slice.level % 2) ? '#FF0000' : '#0000FF' }; }  function getLabel(slice, label) {   return slice.level === 0 ? `Value: ${slice.node.value}` : label; }  function getLabelProps(slice, props) {   return { ...props, style: { background: (slice.level % 2) ? '#FF0000' : '#0000FF' } }; }  class CustomizedCakeChart extends React.Component {   render() {     return (       <CakeChart data={TREE}                  coreRadius={120}                  ringWidth={80}                  ringWidthFactor={0.6}                  getSliceProps={getSliceProps}                  getLabelProps={getLabelProps}                  getLabel={getLabel} />     );   } }

You May Also Like