基本样式:
vue实现代码:
RenderRightData() {
let peitu = document.getElementById('ListBox');
let myChart = this.$echarts.init(peitu);
const data = this.zhu4.data
// 指定图表的配置项和数据
var option = {
color: ['#F70104', '#0276EF', '#EA7631', '#409535'],//设置颜色
title: {
text: this.zhu4.remark,
textStyle: {
color: "#f2f2f2",
fontSize: 16,
align: "center"
},
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'line' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (params) {// 这里鼠标悬浮显示对应item的每项数值
var relVal = params[0].name;
relVal += '<br/>' + params[0].marker + params[0].seriesName + ' : ' + data[params[0].dataIndex].one;// 统计值
relVal += '<br/>' + params[1].marker + params[1].seriesName + ' : ' + data[params[0].dataIndex].two;// 最高值
relVal += '<br/>' + params[2].marker + params[2].seriesName + ' : ' + data[params[0].dataIndex].three;// 最高值
relVal += '<br/>' + params[3].marker + params[3].seriesName + ' : ' + data[params[0].dataIndex].four;// 最高值
return relVal;
},
},
// 顶部显示
legend: {
data: ['一类', '二类', '三类', '四类'],
right: 20,
// left: 120,
top: 30,
itemStyle: {
// color:'#f2f2f2'
},
textStyle: {
color: '#f2f2f2'
}
},
// 设置下方图标的位置
grid: {
left: '10',
right: '4%',
bottom: '3%',
top: '7%',
containLabel: true
},
// 设置X轴的参数
xAxis: [
{
type: 'value',
max: 100,// 设置最大值是多少
splitNumber: 5,// 设置分几段显示
axisLabel: {
show: true,
interval: 'auto',
color: '#f2f2f2',
formatter: '{value} %' // 给每个数值添加%
},
splitLine:{
show:false // 不显示网格线
},
show: true
},
],
// 设置Y轴的参数
yAxis: [
{
show: true,
type: 'category',
data: initDataName(),// 这里是显示名称
axisLabel: {
show: true,
interval: 'auto',
color: '#f2f2f2',
formatter: '{value} ' // 给每个数值添加%
},
},
],
// 设置每个item的参数
series: [{
name: '一类',
type: 'bar',
stack: '总量',
barWidth: 10,
label: {
show: true,
position: 'insideLeft',//在左边显示
formatter: '{c}%'// 给计算后的数值添加%
},
//data: [13, 68.28, 85]
data: initData('one')// 计算对应的百分比
},
{
name: '二类',
type: 'bar',
stack: '总量',
label: {
show: true,
position: 'insideRight',// 在右边显示
formatter: '{c}%'
},
data: initData('two')
},
{
name: '三类',
type: 'bar',
stack: '总量',
label: {
show: true,
position: 'insideRight',// 在右边显示
formatter: '{c}%'
},
data: initData('three')
},
{
name: '四类',
type: 'bar',
stack: '总量',
label: {
show: true,
position: 'insideRight',// 在右边显示
formatter: '{c}%'
},
data: initData('four')
},
]
};
// 显示左侧名称
function initDataName() {
var nameList = []
for (var i = 0; i < data.length; i++) {
nameList.push(data[i].name)
}
return nameList
}
//计算统计值和最高值
function initData(val) {
var serie = [];
for (var i = 0; i < data.length; i++) {
var num = 0
if (val == 'one') {//计算统计值
num = data[i].one
} else if (val == 'two') {//计算最高值
num = data[i].two
} else if (val == 'three') {
num = data[i].three
} else {
num = data[i].four
}
var total = (parseFloat(data[i].one) + parseFloat(data[i].two)
+ parseFloat(data[i].three) + parseFloat(data[i].four)).toFixed(2);
var numcount = Percentage(num, total)
serie.push(numcount);
}
return serie;
}
//计算两者占比
function Percentage(num, total) {
return (Math.round(num / total * 10000) / 100.00);// 小数点后两位百分比
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
window.addEventListener('resize', () => {
myChart.resize()
})
},