在這次的項目中圖表顯示的部分比較多,這邊給分享下用到的圖表的數據刷新

餅圖最后的效果
先看下
前端部分
<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
}]
});
上面是 動態獲取 並要刷新的數據 和餅圖不同的是 柱狀圖傳進去的要是數組
以上內容僅作交流學習,版權歸原作者所有。

