import * as React from 'react'; import * as _ from 'lodash'; import { changeNumberOfData } from './utils'; import { AreaChart, Area, XAxis, YAxis, Tooltip, CartesianGrid, Legend, ReferenceArea, ReferenceLine, ReferenceDot, LabelList, Label } from 'recharts'; const data = [ { name: 'Page A', uv: 4000, pv: 2400, amt: 2400, time: 1 }, { name: 'Page B', uv: 3000, pv: 1398, amt: 2210, time: 3 }, { name: 'Page C', uv: 2000, pv: -9800, amt: 2290, time: 9 }, { name: 'Page D', uv: 2780, pv: 3908, amt: 2000, time: 10 }, { name: 'Page E', uv: 2500, pv: 4800, amt: 2181, time: 12 }, { name: 'Page F', uv: 1220, pv: 3800, amt: 2500, time: 16 }, { name: 'Page G', uv: 2300, pv: 4300, amt: 2100, time: 18 }, { name: 'Page H', time: 24 }, ]; const data01 = [ { day: '05-01', weather: 'sunny' }, { day: '05-02', weather: 'sunny' }, { day: '05-03', weather: 'cloudy' }, { day: '05-04', weather: 'rain' }, { day: '05-05', weather: 'rain' }, { day: '05-06', weather: 'cloudy' }, { day: '05-07', weather: 'cloudy' }, { day: '05-08', weather: 'sunny' }, { day: '05-09', weather: 'sunny' }, ]; const data02 = [ { name: 'Page A', uv: 4000, pv: 2400, amt: 2400 }, { name: 'Page B', uv: 3000, pv: 1398, amt: 2210 }, { name: 'Page C', uv: 2000, pv: 9800, amt: 2290 }, { name: 'Page D', uv: 2780, pv: 3908, amt: 2000 }, { name: 'Page E', uv: 1890, pv: 4800, amt: 2181 }, ]; const rangeData = [ { day: '05-01', temperature: [-1, 10] }, { day: '05-02', temperature: [2, 15] }, { day: '05-03', temperature: [3, 12] }, { day: '05-04', temperature: [4, 12] }, { day: '05-05', temperature: [12, 16] }, { day: '05-06', temperature: [5, 16] }, { day: '05-07', temperature: [3, 12] }, { day: '05-08', temperature: [0, 8] }, { day: '05-09', temperature: [-3, 5] }, ]; const initialState = { data, data01, data02 }; const CustomTooltip: React.FunctionComponent = (props: any) => { const { active, payload, external, label } = props; if (active) { const style = { padding: 6, backgroundColor: '#fff', border: '1px solid #ccc', }; const currData = external.filter((entry: any) => (entry.name === label))[0]; return (

{payload?.[0]?.name + ' : '}{payload?.[0]?.value}

{'uv : '}{currData.uv}

); } return null; }; const renderCustomizedActiveDot: React.FunctionComponent = (props: any) => { const { cx, cy, stroke, index, dataKey } = props; return ; }; const RenderRect: React.FunctionComponent = (props: any) => { return ; }; function CustomizedAxisTick(props: any) { const { x, y, stroke, payload } = props; return ( {payload.value} ); } const renderLabel = (props: any) => { const { index, x, y } = props; return {index}; }; export default class AreaChartDemo extends React.Component { static displayName = 'AreaChartDemo'; state = initialState; handleChangeData = () => { this.setState(() => _.mapValues(initialState, changeNumberOfData)); }; render() { const { data, data01, data02 } = this.state; return (
change data

Stacked AreaChart

Stacked AreaChart | Stack Offset Expand

Stacked AreaChart | Stack Offset Silhouette

Tiny AreaChart

AreaChart with three y-axes

AreaChart of vertical layout

AreaChart with custom tooltip

} />

AreaChart filled with linear gradient

AreaChart of discrete values

AreaChart of range values

); } };