vue 中画echarts 箱线图代码
在vue中引入 echarts,并画echarts中的箱线图
<template>
<span>
<div id="container" style="height:500px;width:600px"></div>
<div id="main" style="height:500px;width:600px"></div>
</span>
</template>
<script>
import * as echarts from "echarts";
import dataTool from "echarts/extension/dataTool";
export default {
name: "hometu",
mounted() {
var data1 = [];
var data2 = [];
var redBoxData = [
// 红色盒子第1组 这里可以放很多数据,代码后面会自动帮忙计算并取值
[850, 740, 900, 1070, 930],
// 红色盒子第2组
[960, 940, 960, 940, 880],
// 红色盒子第3组
[890, 810, 810, 820, 800],
// 红色盒子第4组
[850, 840, 780, 810, 760]
];
var redBoxData1 = [
//
[0.283827805,0.353264777,0.440737863,0.566862608,0.595958517],
//
[0.283827805,0.353264777,0.440737863,0.566862608,0.595958517],
//
[0.283827805,0.353264777,0.440737863,0.566862608,0.595958517],
//
[0.283827805,0.353264777,0.440737863,0.566862608,0.595958517],
];
data1.push(echarts.dataTool.prepareBoxplotData(redBoxData));
data2.push(echarts.dataTool.prepareBoxplotData(redBoxData1));
console.log('data2',data2)
//黑色盒子的数据
var blockBoxData = [
//黑色盒子第1组
[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 960],
//黑色盒子第2组
[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790, 810, 880, 880, 830, 800, 790, 760, 800],
//黑色盒子第3组
[890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920, 890, 860, 880, 720, 840, 850, 850, 780],
//黑色盒子第4组
[850, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870, 810, 740, 810, 940, 950, 800, 810, 870]
];
//以此类推,想画几个盒子就直接加数据和118行所说的画下去就好了
data1.push(echarts.dataTool.prepareBoxplotData(blockBoxData));
console.log('data',data1)
let myChart = echarts.init(document.getElementById('container'));
let option = {
title: {
text: '多组数据比较盒须图',
left: 10,//标题显示的位置
},
legend: {
y: '10%',
data: [ '红色盒子', '黑色盒子']
},
tooltip: {
trigger: 'item',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '10%',
top: '20%',
right: '10%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: ['第1组','第2组','第3组','第4组'],
boundaryGap: true,
nameGap: 30,
splitArea: {
show: true
},
axisLabel: {
formatter: '{value}'
},
splitLine: {
show: false
}
},
yAxis: {
/*min:-400,//可自定义y轴的最大和最小值
max:600,*/
type: 'value',
name: 'Value',
splitArea: {
show: false
}
},
dataZoom: [
{
// type: 'inside',
// start: 0,
// end: 20
type: 'slider',
show: true,
height: 14,
bottom: 10,
borderColor: 'transparent',
backgroundColor: '#e2e2e2',
// 拖拽手柄样式 svg 路径
handleIcon: 'M512 512m-208 0a6.5 6.5 0 1 0 416 0 6.5 6.5 0 1 0-416 0Z M512 192C335.264 192 192 335.264 192 512c0 176.736 143.264 320 320 320s320-143.264 320-320C832 335.264 688.736 192 512 192zM512 800c-159.072 0-288-128.928-288-288 0-159.072 128.928-288 288-288s288 128.928 288 288C800 671.072 671.072 800 512 800z',
handleColor: '#aab6c6',
handleSize: 20,
handleStyle: {
borderColor: '#aab6c6',
shadowBlur: 4,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: '#e5e5e5'
},
start: 0,
end: 30
},
// {
// show: true,
// height: 20,
// type: 'slider',
// top: '90%',
// xAxisIndex: [0],
// start: 0,
// end: 20
// }
],
series: [
{
name: '红色盒子',
type: 'boxplot',
data: data1[0].boxData,//data[0].boxData代表的是data中红色盒子的数据
tooltip: {formatter: formatter}
},
{
name: '黑色盒子',
type: 'boxplot',
data: data1[1].boxData,//data[0].boxData代表的是data中黑色盒子的数据
tooltip: {formatter: formatter}
}
/*以此类推想画几个盒子,就在后面加,
{
name: $.i18n.prop('计划时间'),
type: '黑色盒子',
data: data[1].boxData,//data[0].boxData代表的是data中黑色盒子的数据
tooltip: {formatter: formatter}
}*/
]
};
let bar = echarts.init(document.getElementById('main'));
let option_2 ={
title: {
text: '单组数据盒须图',
left: 10,//标题显示的位置
},
legend: {
y: '10%',
data: [ '红色盒子']
},
tooltip: {
trigger: 'item',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '10%',
top: '20%',
right: '10%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: ['te','e','2','3'],
boundaryGap: true,
nameGap: 30,
splitArea: {
show: true
},
axisLabel: {
formatter: '{value}'
},
splitLine: {
show: false
}
},
yAxis: {
/*min:-400,//可自定义y轴的最大和最小值
max:600,*/
type: 'value',
name: 'Value',
splitArea: {
show: false
}
},
// dataZoom 为横轴数据多时,给横轴加一个可以拖动的功能
dataZoom: [
{
// type: 'inside',
// start: 0,
// end: 20,
type: 'slider',
show: true,
height: 14,
bottom: 10,
borderColor: 'transparent',
backgroundColor: '#e2e2e2',
// 拖拽手柄样式 svg 路径
handleIcon: 'M512 512m-208 0a6.5 6.5 0 1 0 416 0 6.5 6.5 0 1 0-416 0Z M512 192C335.264 192 192 335.264 192 512c0 176.736 143.264 320 320 320s320-143.264 320-320C832 335.264 688.736 192 512 192zM512 800c-159.072 0-288-128.928-288-288 0-159.072 128.928-288 288-288s288 128.928 288 288C800 671.072 671.072 800 512 800z',
handleColor: '#aab6c6',
handleSize: 20,
handleStyle: {
borderColor: '#aab6c6',
shadowBlur: 4,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: '#e5e5e5'
},
start: 0, // 拖动从0,最开始开始
end: 20 // 拖动在横轴所有数据的20%处停止
},
// {
// show: true,
// height: 20,
// type: 'slider',
// top: '90%',
// xAxisIndex: [0],
// start: 0,
// end: 20
// }
],
series: [
{
name: '红色盒子',
type: 'boxplot',
data: data2[0].boxData,//data[0].boxData代表的是data中红色盒子的数据
tooltip: {formatter: formatter}
},
// {
// name: '黑色盒子',
// type: 'boxplot',
// data: data2[0].boxData,//data[0].boxData代表的是data中黑色盒子的数据
// tooltip: {formatter: formatter}
// }
/*以此类推想画几个盒子,就在后面加,
{
name: $.i18n.prop('计划时间'),
type: '黑色盒子',
data: data[1].boxData,//data[0].boxData代表的是data中黑色盒子的数据
tooltip: {formatter: formatter}
}*/
]
};
function formatter(param) {
return [
'类别名称: ' + param.name,
// '上边界: ' + param.data[0],
'下四分位数: ' + param.data[1],
'中位数: ' + param.data[2],
'上四分位数: ' + param.data[3],
'下边界: ' + param.data[4]
].join('<br/>')
}
myChart.setOption(option);
bar.setOption(option_2);
},
}
</script>
<style scoped>
</style>
多系列数据比较箱线图