折线图和柱状图如何同时展示?
问题描述
如图所示,我想在我的产品中添加一个这样的图表,pv 用折线图展示 uv 用柱状图展示,应该如何实现?

解决方案
一开始以为你是希望做一个双轴图,仔细看了后发现并不是。双轴图会在图的左右两边各有一个坐标轴,而你真正的需求是组合图,在一个坐标系中渲染多组系列。
并不是所有的图表库都支持多系列绘图,这里我使用 VChart 为例:
指定两个系列分别是 bar 和 line,图表类型选择common即可。
代码示例
const spec = {
type: 'common',
seriesField: 'color',
data: [
{
id: 'id0',
values: [
{
x: 'Monday',
type: 'Breakfast',
y: 15
},
{
x: 'Monday',
type: 'Lunch',
y: 25
},
{
x: 'Tuesday',
type: 'Breakfast',
y: 12
},
{
x: 'Tuesday',
type: 'Lunch',
y: 30
},
{
x: 'Wednesday',
type: 'Breakfast',
y: 15
},
{
x: 'Wednesday',
type: 'Lunch',
y: 24
},
{
x: 'Thursday',
type: 'Breakfast',
y: 10
},
{
x: 'Thursday',
type: 'Lunch',
y: 25
},
{
x: 'Friday',
type: 'Breakfast',
y: 13
},
{
x: 'Friday',
type: 'Lunch',
y: 20
},
{
x: 'Saturday',
type: 'Breakfast',
y: 10
},
{
x: 'Saturday',
type: 'Lunch',
y: 22
},
{
x: 'Sunday',
type: 'Breakfast',
y: 12
},
{
x: 'Sunday',
type: 'Lunch',
y: 19
}
]
},
{
id: 'id1',
values: [
{
x: 'Monday',
type: 'Drinks',
y: 22
},
{
x: 'Tuesday',
type: 'Drinks',
y: 43
},
{
x: 'Wednesday',
type: 'Drinks',
y: 33
},
{
x: 'Thursday',
type: 'Drinks',
y: 22
},
{
x: 'Friday',
type: 'Drinks',
y: 10
},
{
x: 'Saturday',
type: 'Drinks',
y: 30
},
{
x: 'Sunday',
type: 'Drinks',
y: 50
}
]
}
],
series: [
{
type: 'bar',
dataIndex: 0,
label: {
visible: true
},
seriesField: 'type',
dataIndex: 0,
xField: ['x', 'type'],
yField: 'y'
},
{
type: 'line',
dataIndex: 1,
label: {
visible: true
},
seriesField: 'type',
xField: 'x',
yField: 'y',
stack: false
}
],
axes: [
{
orient: 'left'
},
{
orient: 'bottom',
label: {
visible: true
},
type: 'band'
}
],
legends: {
visible: true,
orient: 'bottom'
}
};
结果展示

Demo: https://visactor.io/vchart/demo/combination/single-region?keyword=commonChart
相关文档
Common Chart option: https://visactor.io/vchart/option/commonChart
github: https://github.com/VisActor/VChart
Series tutorials: https://visactor.io/vchart/guide/tutorial_docs/Chart_Concepts/Series/Composition_and_Effect_of_Series