- ReactJS + D3 = data viz happiness
- Bar Chart
- Pie Chart
- Scatter Plot
- Line Chart
- Table
- Force-Directed Graph
- Pack Chart
- classnames for everything
- default CSS styling
- Radial Stacked Bar
- stacked bar (currently works with regular bar chart but can be improved)
- histogram
- combination chart
- tooltips (with filtering)
- legends (with filtering)
- filtering
- interactivity
- animations
- Universal/Isomophoric rendering
- React handles all node creation (sans axis)
- Responsive design
- accessible
- semantic
- configurable with sensible defaults
import Chart from 'reactjs-d3-universal';
import React from 'react';
const margins = {
bottom: 20,
left: 60,
right: 60,
top: 20,
};
const data = [
{
gender: 'Male',
lastName: 'Hall',
total: 141.92,
}, {
gender: 'Female',
lastName: 'Jenny',
total: 149.79,
}, {
gender: 'Klingon',
lastName: 'Warf',
total: 134.23,
},
];
<Chart
chartType='table'
data={data}
filterable={true}
id='paying-customers-table'
sortable={true}
/>
<Chart
chartType='bar'
colorScaleScheme='schemeCategory20'
colorScaleType='basic'
data={data}
datumLabels={['totalEmployees']}
xAxis={true}
xAxisLabel='company locations'
xScale={true}
xValue='location'
yAxis={true}
yAxisLabel='total employees'
yValue='totalEmployees'
yScale={true}
id='employees-at-each-location'
margins={{
bottom: 60,
left: 50,
right: 10,
top: 10,
}}
/>
<Chart
chartType='pie'
colorScaleScheme='schemeCategory20'
colorScaleType='basic'
data={data}
datumLabels={['status', 'total']}
id='open-issues'
margins={{
bottom: 40,
left: 80,
right: 80,
top: 40,
}}
xAxis={true}
xAxisLabel='ISSUES BY TYPE'
yValue='total'
/>
<Chart
chartDataGroupBy='type'
chartType='line'
colorScaleScheme='schemeCategory10'
colorScaleType='basic'
data={data}
datumLabels={['total']}
id='paying-customers'
xAxis={true}
xAxisLabel='Date'
xScale={true}
xScaleTime={true}
xScaleTimeFormat='%Y/%m/%d'
xValue='date'
yAxis={true}
yAxisLabel='Total Paying Customers'
yScale={true}
yValue='totalPayingCustomers'
margins={{
bottom: 70,
left: 70,
right: 10,
top: 10,
}}
/>
<Chart
chartDataGroupBy='id'
chartType='forceDirectedGraph'
colorScaleScheme='schemeCategory20'
colorScaleType='basic'
data={data}
id='force-graph'
margins={{
bottom: 60,
left: 50,
right: 50,
top: 60,
}}
/>
<Chart
chartType='pack'
colorScaleScheme='schemeCategory20'
colorScaleType='basic'
// you must structure your data like this https://bl.ocks.org/mbostock/7607535
data={data}
datumLabels={['name']}
id='pack'
margins={{
bottom: 10,
left: 10,
right: 10,
top: 10,
}}
/>