ECharts(Enterprise Charts)是一个基于 JavaScript 的开源可视化图表库,由百度开发和维护。ECharts 提供了丰富多样的图表类型,并支持动态数据更新、数据过滤、数据缩放等交互功能,可以在 Web、Node.js、微信小程序、React Native 等项目中使用。
ECharts 支持的图表类型包括折线图、柱状图、散点图、饼图、雷达图等,同时还提供了混搭图、地图、热力图、仪表盘等复杂图表。ECharts 的优点在于其灵活性和可扩展性,用户只需要按照要求提供数据和配置项,即可自定义样式和布局。
饼图:
雷达图:
折线图:
柱状图:
漏斗图:
北极柱状图:
HTML:
<body>
<div id="tubiao"></div>
<button onclick="renderBar()">饼图</button>
<button onclick="renderRadar()">雷达图</button>
<button onclick="renderLine()">折线图</button>
<button onclick="histogram()">柱状图</button>
<button onclick="funnelPlot()">漏斗图</button>
<button onclick="polar()">北极柱状图</button>
<script src="js/new_file.js">
</script>
CSS:
<style>
#tubiao {
width: 800px;
height: 600px;
}
</style>
JS:
let data = []
let myChart = echarts.init(document.getElementById('tubiao'));
$.ajax({
type: "get",
url: "./js/图表数组.json",
success: function(res) {
console.log(res);
data = res
renderBar()
}
})
// 渲染饼图
function renderBar() {
let arr = JSON.parse(JSON.stringify(data));
// 这是for循环的方法,简单
// for (let i = 0; i < data.length; i++) {
// data[i].value = data[i].num
// delete data[i].num
// }
// 这是filter方法,后面经常用到
arr.filter(function(itme) {
itme.value = itme.num;
delete itme.num
})
// sort排序
arr.sort(function(a, b) {
return b.value - a.value
})
let option = {
title: {
text: "汉宫之年鹏enpi",
left: "center"
},
legend: {
left: "left",
top: 'bottom',
orient: "vertical"
},
toolbox: {
show: true,
feature: {
dataView: {
show: true,
readOnly: false
},
restore: {
show: true
},
saveAsImage: {
show: true
}
}
},
series: [{
name: '数据',
type: 'pie',
radius: [50, 260],
center: ['50%', '60%'],
roseType: 'area',
itemStyle: {
borderRadius: 12
},
data: arr
}]
};
myChart.setOption(option, true);
}
// 渲染饼图
function renderRadar() {
let arr = JSON.parse(JSON.stringify(data));
let maxs = [];
let vals = [];
arr.filter(function(itme) {
maxs.push({
name: itme.name,
maxs: 100
})
vals.push(itme.num);
})
let option = {
title: {
text: '汉宫之年鹏enpi',
left: "center"
},
legend: {
data: ['数据'],
left: "left",
top: 'bottom',
orient: "vertical"
},
radar: {
indicator: maxs
},
series: [{
name: '数据',
type: 'radar',
data: [{
value: vals,
name: '汉宫之年鹏enpi'
}]
}]
};
myChart.setOption(option, true);
}
// 渲染折线图
function renderLine() {
let arr = JSON.parse(JSON.stringify(data));
let maxs = [];
let vals = [];
let name = []
arr.filter(function(itme) {
maxs.push({
name: itme.name,
maxs: 100
})
vals.push(itme.num);
name.push(itme.name);
})
let option = {
title: {
text: '汉宫之年鹏enpi',
left: "center"
},
xAxis: {
type: 'category',
data: name
},
yAxis: {
type: 'value'
},
series: [{
name: '数据',
data: vals,
type: 'line'
}]
};
myChart.setOption(option, true);
}
// 渲染柱状图
function histogram() {
let arr = JSON.parse(JSON.stringify(data));
let maxs = [];
let vals = [];
let name = [];
arr.filter(function(itme) {
maxs.push({
name: itme.name,
maxs: 100
})
vals.push(itme.num);
name.push(itme.name);
})
let option = {
title: {
text: '汉宫之年鹏enpi',
left: "center"
},
legend: {
data: ['数据'],
left: "left",
top: 'bottom',
orient: "vertical"
},
xAxis: {
type: 'category',
data: name
},
yAxis: {
type: 'value',
},
series: [{
name: '数据',
data: vals,
type: 'bar'
}]
};
myChart.setOption(option, true);
}
// 渲染漏斗图
function funnelPlot() {
let arr = JSON.parse(JSON.stringify(data));
arr.filter(function(itme) {
itme.value = itme.num;
delete itme.num
})
let option = {
title: {
text: '汉宫之年鹏enpi',
left: "center"
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%'
},
toolbox: {
feature: {
dataView: {
readOnly: false
},
restore: {},
saveAsImage: {}
}
},
legend: {
data: ['突破', '手枪', '自由人', '狙击', '指挥','拍桌子'],
left: "left",
top: 'bottom',
orient: "vertical"
},
series: [{
name: '数据',
type: 'funnel',
left: '10%',
top: 60,
bottom: 60,
width: '80%',
min: 0,
max: 100,
minSize: '0%',
maxSize: '100%',
sort: 'descending',
gap: 2,
label: {
// show: true,
position: 'inside'
},
labelLine: {
length: 10,
lineStyle: {
width: 1,
type: 'solid'
}
},
itemStyle: {
borderColor: '#fff',
borderWidth: 1
},
emphasis: {
label: {
fontSize: 20
}
},
data: arr
}]
};
myChart.setOption(option, true);
}
// 北极柱状图
function polar(){
let arr = JSON.parse(JSON.stringify(data));
let maxs = [];
let vals = [];
let name = [];
arr.filter(function(itme) {
maxs.push({
name: itme.name,
maxs: 100
})
vals.push(itme.num);
name.push(itme.name);
})
let option = {
title: [
{
text: '汉宫之年鹏enpi',
left: "center"
}
],
polar: {
radius: [30, '80%']
},
angleAxis: {
max: 110,
startAngle: 75
},
radiusAxis: {
type: 'category',
data: name
},
tooltip: {},
series: {
name:'数据',
type: 'bar',
data: vals,
// [2, 1.2, 2.4, 3.6,3.8],
coordinateSystem: 'polar',
label: {
// show: true,
position: 'middle',
formatter: '{b}: {c}'
}
}
};
myChart.setOption(option, true);
}
ECharts:
ECharts官网找到这个文件下载,放到JS文件里。
jquery-3.7.0:
jQuery是一个流行的JavaScript库,它简化了HTML文档操作、事件处理、动画和用于web开发的Ajax交互。它提供了一个简洁和易于使用的API(应用程序编程接口),允许开发人员编写更少的代码来实现强大的网页效果。jQuery支持广泛的web浏览器,使创建交互式、响应式和动态web应用程序变得容易。
也要来个jquery文件然后丢JS里面。
图表数组.json:
在JS文件里创建个JSON文件
[
{
"name":"狙击",
"num":75
},{
"name":"指挥",
"num":88
},{
"name":"自由人",
"num":65
},{
"name":"突破",
"num":44
},{
"name":"手枪",
"num":56
},{
"name":"拍桌子",
"num":100
}
]
ECharts 提供了多种使用方式,包括基于 DOM、Canvas 和 SVG 的渲染,可以适配不同的浏览器和设备。同时还支持多语言和多机房的数据联动、图形标记和动画效果等高级功能,满足了各种数据可视化的需求。