Echarts动态刷新数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Echarts动态刷新数据在这次的项⽬中图表显⽰的部分⽐较多,这边给分享下⽤到的图表的数据刷新
饼图最后的效果
先看下
前端部分
<div div style="height: 40%; width: 17.5%; background-color: white;
margin-top: 20px; float: left; border-left: black;" id="member">
</div>
这是右边图的 echarts的html ⼀定要定义好⼤⼩
接下来是 js部分先定义⼀个模板官⽹有⾃⼰稍加修改(⽐较懒没加注释)
// 绘制会员量⽐例图表
var memberChart = echarts.init(document.getElementById('member'));
memberChart.setOption({
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b}: {c} ({d}%)"
},
legend: {
itemHeight: 10,
itemWidth: 10,
orient: 'vertical',
x: 'center',
y: 'bottom',
icon: 'roundRect',
formatter: function(name) {
var index = 0;
var clientlabels = ['新增会员','⽼会员'];
var clientcounts = [621,32032];
clientlabels.forEach(function(value,i){
if(value == name){
index = i;
}
});
return name + " " + clientcounts[index];
}
},
series: [
{
name:'男⼥⽐例',
type:'pie',
radius: ['45%', '53%'],
avoidLabelOverlap: false,
hoverAnimation: false,
data:[
{value:621, name:'新增会员'},
{value:32032, name:'⽼会员'},
],
itemStyle: {
normal:{
label:{
position : 'outside',
formatter: '{d}%',
fontSize: 10,
},
labelLine :{
length: 2,
length2: 2,
show:false,
}
}
}
}
],
color:['#0090FF','#F6A20C'],
title: {
subtext: '会员总⼈数',
text: '32653',
x: 'center',
y: 'center',
padding: 0,
itemGap: 0,
textStyle:{
fontSize: 20,
},
subtextStyle:{
fontSize: 10,
},
},
graphic: {
type: 'text',
style:{
x: 15,
y: 15,
font: 'bolder 1.2em "PingFang-SC-Medium", sans-serif',
text:'今⽇新增会员⽐例',
},
},
});
因为主副标题被我拿去显⽰不同数据了所有⽤上了
graphic
原⽣图形元素组件
接下来看下动态刷新数据的js
function reflushMember(data) {
memberChart.setOption({
legend: {
formatter: function(name) {
var index = 0;
var clientlabels = ['新增会员','⽼会员'];
var clientcounts = [data.newMemberCount, data.oldMemberCount]; clientlabels.forEach(function(value,i){
if(value == name){
index = i;
}
});
return name + " " + clientcounts[index];
}
},
series: [
{
data:[
{value:data.newMemberCount, name:'新增会员'},
{value:data.oldMemberCount, name:'⽼会员'},
],
}],
title: {
text:data.memberCount,
}
})
}
主要就是把之前模板上的数据部分替换成后台获取到的数据
饼图的刷新就到这⾥
还有个横向柱状图其实都是差不多的但是还是也看下吧
先看效果
这是4个横向柱状图适应不同的搜索条件就看下⽉度top5的吧
<p id="monthTitle" style="position:absolute;margin-left: 18%;margin-top: 1.4%;
font: bolder 1.2em PingFang-SC-Medium sans-serif;"></p>
<div style="height: 100%;width: 100%;position:absolute;" id="monthArea"></div> P标签是那个标题
// 绘制⽉度热⼒商圈图表
var monthAreaChart = echarts.init(document.getElementById('monthArea'));
monthAreaChart.setOption({
dataset: {
source: [
/* [58212, '⼩郡⼲串串'],
[78254, '钢管⼚'],
[41032, '耐克'],
[12755, '⾦⼤福'],
[20145, '肯德基'],*/
]
},
/*grid: {containLabel: true},*/
xAxis: {name: '(⼈)',
show:true,
splitLine: {
show: false
}},
yAxis: {type: 'category',
axisLine:{show:false}, //坐标轴
axisTick:[{ //坐标轴⼩标记
show:false
}],
},
grid:{
height:'70%',
y2:20,
left:'15%',
},
series: [
{
textStyle:{
fontSize:10,
},
type: 'bar',
encode: {
// Map the "amount" column to X axis.
x: 'amount',
// Map the "product" column to Y axis
y: 'product'
},
/*barWidth: 10,*/
barGap:'70%',/*多个并排柱⼦设置柱⼦之间的间距*/
barCategoryGap:'50%',/*多个并排柱⼦设置柱⼦之间的间距*/
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
offset: 0,
color: '#438CFF'
}, {
offset: 1,
color: '#20C0F4'
}]),
label: {
show: true, //开启显⽰
position: 'right', //在上⽅显⽰
textStyle: { //数值样式
color: 'black',
fontSize: 10
}
},
}
},
}
],
graphic: {
type: 'text',
style:{
x: 15,
y: 15,
font: 'bolder 1.2em "PingFang-SC-Medium", sans-serif',
text:'⽉度TOP5',
},
},
上⾯是横向柱状图模板例⼦
var listTop5Result = result.listTop5Result;
for(var i = listTop5Result.length - 1; i >= 0; i--){
names.push(listTop5Result[i].deptName); //挨个取出类别并填⼊类别数组 }
for(var i = listTop5Result.length - 1; i >= 0; i--){
nums.push(listTop5Result[i].num); //挨个取出⼈次并填⼊销量数组
}
myChart.hideLoading(); //隐藏加载动画
myChart.setOption({ //加载数据图表
yAxis: {
data: names
},
series: [{
data: nums
}]
});
上⾯是动态获取并要刷新的数据和饼图不同的是柱状图传进去的要是数组以上内容仅作交流学习,版权归原作者所有。