适配native-echarts
方式1:重叠
var data = [
{ name: 'A', value: 0, sqz: 3, bhz: -3, zbbhz: 0.0 },
{ name: 'B', value: 1, sqz: 17, bhz: -16, zbbhz: 0.0 },
{ name: 'C', value: 2, sqz: 21, bhz: -19, zbbhz: 0.0 },
{ name: 'D', value: 3, sqz: 51, bhz: -48, zbbhz: 0.0 },
{ name: 'E', value: 1, sqz: 73, bhz: -72, zbbhz: 0.0 },
{ name: 'F', value: 2, sqz: 47, bhz: -45, zbbhz: 0.0 },
{ name: 'G', value: 0, sqz: 63, bhz: -63, zbbhz: 0.0 },
{ name: 'H', value: 1, sqz: 93, bhz: -92, zbbhz: 0.0 },
{ name: 'I', value: 0, sqz: 18, bhz: -18, zbbhz: 0.0 },
{ name: 'J', value: 2, sqz: 44, bhz: -42, zbbhz: 0.0 },
{ name: 'K', value: 0, sqz: 21, bhz: -21, zbbhz: 0.0 },
{ name: 'L', value: 3, sqz: 102, bhz: -99, zbbhz: 0.0 },
{ name: 'M', value: 5, sqz: 37, bhz: 2, zbbhz: 0.0 },
{ name: 'N', value: 0, sqz: 44, bhz: -44, zbbhz: 0.0 },
{ name: 'O', value: 1, sqz: 50, bhz: -49, zbbhz: 0.0 },
{ name: 'P', value: 1, sqz: 36, bhz: -35, zbbhz: 0.0 },
{ name: 'Q', value: 1, sqz: 28, bhz: -27, zbbhz: 0.0 },
{ name: 'R', value: 1, sqz: 13, bhz: -12, zbbhz: 0.0 },
{ name: 'S', value: 0, sqz: 12, bhz: -12, zbbhz: 0.0 }
];//真实数据
var list1 = [];
var list2 = [];
var list3 = [];
var nameArr = [];
let maxValue = 0;
var barWidth = 20;
var barWidth2 = 30;
data.map(function (item) {
// list4.push({ value: item.value });
nameArr.push(item.name);
if (parseInt(item.value) > maxValue) {
maxValue = parseInt(item.value);
}
});
let len = maxValue > 0 ? maxValue : 10;
data.map(function (item) {
list1.push({ value: len, showValue: item.value });
list2.push({
value: len * 1.2,
label: parseInt(item.bhz) > 0 ? '+' + item.bhz : ''
});
list3.push({
value: len * 1.2,
label: parseInt(item.bhz) <= 0 ? item.bhz : ''
});
});
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
//坐标轴指示器,坐标轴触发有效
type: 'line', // 默认为直线,可选为:'line' | 'shadow'
lineStyle: {
color: 'transparent'
}
},
formatter: '{b}: {c3}'
},
legend: {
show: false
},
xAxis: {
show: false
},
yAxis: {
data: nameArr,
axisTick: {
show: false
},
axisLine: {
show: false
}
},
textStyle: {
color: '#333333',
fontSize: 14
},
series: [
{
type: 'bar',
barGap: '-100%', //叠加重叠使用
barWidth: barWidth,
data: list1,
itemStyle: {
// label: { show: true }
normal: {
color: 'transparent'
}
},
label: {
normal: {
show: true,
position: 'right', // 将 label 显示在右侧
formatter: function (params) {
return params.data.showValue + '起';
}
}
}
},
{
type: 'bar',
barGap: '-100%', //叠加重叠使用
barWidth: barWidth,
data: list2,
itemStyle: {
normal: {
color: 'transparent'
}
},
label: {
normal: {
show: true,
position: 'right',
formatter: function (params) {
return params.data.label;
},
textStyle: {
color: '#FF2929',
fontSize: 14,
fontWeight: 'bold'
}
}
}
},
{
type: 'bar',
barGap: '-100%', //叠加重叠使用
barWidth: barWidth,
data: list3,
itemStyle: {
normal: {
color: 'transparent'
}
},
label: {
normal: {
show: true,
position: 'right',
formatter: function (params) {
return params.data.label;
},
textStyle: {
color: '#0AB28A',
fontSize: 14,
fontWeight: 'bold'
}
}
}
},
{
type: 'bar',
barWidth: barWidth,
barMinHeight:1,
itemStyle: {
// label: { show: true },
normal: {
color: '#479DFF'
}
},
data: data
}
],
grid: {
containLabel: true,
top: '5%',
left: '10',
right: '10%'
}
};
方法2:堆叠
var data = [
{ name: 'A', value: 0, sqz: 3, bhz: -3, zbbhz: 0.0 },
{ name: 'B', value: 1, sqz: 17, bhz: -16, zbbhz: 0.0 },
{ name: 'C', value: 2, sqz: 21, bhz: -19, zbbhz: 0.0 },
{ name: 'D', value: 3, sqz: 51, bhz: -48, zbbhz: 0.0 },
{ name: 'E', value: 1, sqz: 73, bhz: -72, zbbhz: 0.0 },
{ name: 'F', value: 2, sqz: 47, bhz: -45, zbbhz: 0.0 },
{ name: 'G', value: 0, sqz: 63, bhz: -63, zbbhz: 0.0 },
{ name: 'H', value: 1, sqz: 93, bhz: -92, zbbhz: 0.0 },
{ name: 'I', value: 0, sqz: 18, bhz: -18, zbbhz: 0.0 },
{ name: 'J', value: 2, sqz: 44, bhz: -42, zbbhz: 0.0 },
{ name: 'K', value: 0, sqz: 21, bhz: -21, zbbhz: 0.0 },
{ name: 'L', value: 3, sqz: 102, bhz: -99, zbbhz: 0.0 },
{ name: 'M', value: 5, sqz: 37, bhz: 2, zbbhz: 0.0 },
{ name: 'N', value: 0, sqz: 44, bhz: -44, zbbhz: 0.0 },
{ name: 'O', value: 1, sqz: 50, bhz: -49, zbbhz: 0.0 },
{ name: 'P', value: 1, sqz: 36, bhz: -35, zbbhz: 0.0 },
{ name: 'Q', value: 1, sqz: 28, bhz: -27, zbbhz: 0.0 },
{ name: 'R', value: 1, sqz: 13, bhz: -12, zbbhz: 0.0 },
{ name: 'S', value: 0, sqz: 12, bhz: -12, zbbhz: 0.0 }
];//真实数据
var list1 = [];//补充的柱子,撑起左侧展示数据
var list2 = [];//增加展示
var list3 = [];//减少展示
var nameArr = [];
let maxValue = 0;
var barWidth = 20;
var barWidth2 = 30;
data.map(function (item) {
nameArr.push(item.name);
if (parseInt(item.value) > maxValue) {
maxValue = parseInt(item.value);
}
});
let len = maxValue > 0 ? maxValue : 10;
data.map(function (item) {
list1.push({ value: len - item.value, showValue: item.value });
list2.push({
value: len * 0.2,
label: parseInt(item.bhz) > 0 ? '+' + item.bhz : ''
});
list3.push({
value: len * 0,
label: parseInt(item.bhz) <= 0 ? item.bhz : ''
});
});
option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function(params){
return params[0].data.name + ": " + params[0].data.value;
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
show: false,
type: 'value'
},
yAxis: {
type: 'category',
data: nameArr,
axisTick: {
show: false
},
axisLine: {
show: false
}
},
series: [
{
name: '真实',
type: 'bar',
stack: 'total',
barMinHeight:1,
data: data
},
{
name: '补全',
type: 'bar',
stack: 'total',
itemStyle: {
normal: {
color: 'transparent'
}
},
label: {
normal: {
show: true,
position: 'right',
formatter: function (params) {
return params.data.showValue + '起';
}
}
},
data: list1
},
{
name: '增加',
type: 'bar',
stack: 'total',
label: {
normal: {
show: true,
position: 'right',
formatter: function (params) {
return params.data.label;
},
textStyle: {
color: '#FF2929',
fontSize: 14,
fontWeight: 'bold'
}
}
},
itemStyle: {
normal: {
color: 'transparent'
}
},
data: list2
},
{
name: '减少',
type: 'bar',
stack: 'total',
label: {
normal: {
show: true,
position: 'right',
formatter: function (params) {
return params.data.label;
},
textStyle: {
color: '#0AB28A',
fontSize: 14,
fontWeight: 'bold'
}
}
},
data: list3
}
]
};