前端g2plot折线图和柱状图结合并且还有缩略轴
时间: 2024-02-14 09:09:03 浏览: 100
简单折线图和柱状图控件
4星 · 用户满意度95%
您好!要实现前端g2plot折线图和柱状图结合并且还有缩略轴,您可以按照以下步骤进行操作:
1. 导入所需的库和数据。
```javascript
import { Chart } from '@antv/g2';
import { DataView } from '@antv/data-set';
const data = [
{ month: '2021-01', sales: 200, profit: 40 },
{ month: '2021-02', sales: 300, profit: 60 },
{ month: '2021-03', sales: 400, profit: 80 },
{ month: '2021-04', sales: 500, profit: 100 },
{ month: '2021-05', sales: 600, profit: 120 },
{ month: '2021-06', sales: 700, profit: 140 },
{ month: '2021-07', sales: 800, profit: 160 },
{ month: '2021-08', sales: 900, profit: 180 },
{ month: '2021-09', sales: 1000, profit: 200 },
{ month: '2021-10', sales: 1100, profit: 220 },
{ month: '2021-11', sales: 1200, profit: 240 },
{ month: '2021-12', sales: 1300, profit: 260 },
];
```
2. 数据处理。将数据按照需要的格式进行处理,并将时间格式转换为datetime类型。
```javascript
const ds = new DataView();
ds.source(data)
.transform({
type: 'map',
callback: (row) => {
row.date = new Date(row.month).getTime();
return row;
},
})
.transform({
type: 'sort-by',
fields: ['date'],
});
```
3. 绘制折线图和柱状图。
```javascript
const chart = new Chart({
container: 'container',
autoFit: true,
height: 500,
});
chart.data(ds.rows);
chart.axis('date', {
label: {
formatter: (value) => {
return new Date(value).toLocaleDateString('en-US', {
month: 'short',
year: 'numeric',
});
},
},
});
chart.line().position('date*sales');
chart
.interval()
.position('date*profit')
.color('#2ecc71');
chart.render();
```
4. 绘制缩略轴。
```javascript
const sliderChart = new Chart({
container: 'slider-container',
autoFit: true,
height: 50,
});
sliderChart.data(ds.rows);
sliderChart.axis('date', {
label: null,
tickLine: null,
});
sliderChart
.interval()
.position('date*sales')
.color('#2ecc71');
sliderChart.tooltip(false);
sliderChart.interaction('element-highlight');
sliderChart.render();
```
5. 合并图表。使用Slider将折线图、柱状图和缩略轴合并在一起。
```javascript
const slider = new Slider({
dom: '#slider',
width: 'auto',
height: 26,
padding: [10, 30, 0, 30],
start: 0,
end: 0.5,
xAxis: {
type: 'time',
tickCount: 10,
mask: 'MMM YY',
},
yAxis: {
type: 'linear',
tickCount: 3,
},
data: ds.rows,
backgroundChart: {
type: 'line',
options: {
xField: 'date',
yField: 'sales',
smooth: true,
lineStyle: {
lineWidth: 2,
stroke: '#2ecc71',
},
},
},
foregroundChart: {
type: 'interval',
options: {
xField: 'date',
yField: 'profit',
color: '#2ecc71',
},
},
});
slider.render();
```
这样,您就可以得到一个包含折线图、柱状图和缩略轴的可交互式数据可视化图表了。
阅读全文