用react框架g2plot DualAxes slider的交互,例子
时间: 2023-07-04 17:24:07 浏览: 184
好的,这里我提供一个使用 `react` 和 `g2plot` 的 `DualAxes` 图表和 `Slider` 的交互示例,希望能够帮到你。
首先,需要安装依赖:
```bash
npm install g2plot react antd --save
```
然后,创建一个 `DualAxesChart` 组件,代码如下:
```jsx
import React, { useState } from 'react';
import { DualAxes } from '@ant-design/charts';
import { Slider } from 'antd';
const DualAxesChart = () => {
const [data, setData] = useState([
{ time: '2019-01', value: 10, count: 100 },
{ time: '2019-02', value: 20, count: 200 },
{ time: '2019-03', value: 30, count: 300 },
{ time: '2019-04', value: 40, count: 400 },
{ time: '2019-05', value: 50, count: 500 },
{ time: '2019-06', value: 60, count: 600 },
{ time: '2019-07', value: 70, count: 700 },
{ time: '2019-08', value: 80, count: 800 },
{ time: '2019-09', value: 90, count: 900 },
{ time: '2019-10', value: 100, count: 1000 },
]);
const [sliderValue, setSliderValue] = useState(0);
const config = {
data: [data, data],
xField: 'time',
yField: ['value', 'count'],
yAxis: [{}, { min: 0, max: 1000 }],
slider: {
start: sliderValue,
end: sliderValue + 2,
},
layers: [
{
type: 'line',
name: 'value',
smooth: true,
lineStyle: {
lineWidth: 3,
stroke: '#1890ff',
},
},
{
type: 'line',
name: 'count',
yAxisIndex: 1,
smooth: true,
lineStyle: {
lineWidth: 3,
stroke: '#2fc25b',
},
},
{
type: 'line',
name: 'slider',
data: [
{ time: data[sliderValue].time, value: 0 },
{ time: data[sliderValue].time, value: 1000 },
],
lineStyle: {
lineWidth: 3,
stroke: '#f00',
lineDash: [4, 4],
},
},
],
};
return (
<div>
<DualAxes {...config} />
<div style={{ margin: '20px 0' }}>
<Slider
min={0}
max={data.length - 3}
value={sliderValue}
onChange={(value) => {
setSliderValue(value);
config.slider.start = value;
config.slider.end = value + 2;
config.layers[2].data = [
{ time: data[value].time, value: 0 },
{ time: data[value].time, value: 1000 },
];
setData([...data]);
}}
/>
</div>
</div>
);
};
export default DualAxesChart;
```
在上面的代码中,我们定义了一个 `data` 数组,其中包含每个月的 `value` 和 `count` 值。我们还定义了一个 `sliderValue` 状态,用于存储滑块的值。 `config` 对象用于配置 `DualAxes` 图表和 `Slider` 组件。在 `layers` 中,我们定义了三个图层,一个用于显示 `value` 值,一个用于显示 `count` 值,另一个用于显示滑块的值。在 `Slider` 组件中,我们定义了一个 `onChange` 回调函数来更新 `sliderValue` 状态以及图表的数据和配置。
最后,在你的应用程序中,你可以像这样使用 `DualAxesChart` 组件:
```jsx
import React from 'react';
import DualAxesChart from './DualAxesChart';
const App = () => {
return (
<div>
<DualAxesChart />
</div>
);
};
export default App;
```
这样,你就可以实现交互式的 `DualAxes` 图表和滑块了。希望这个示例对你有所帮助!
阅读全文