解決echarts數(shù)據(jù)二次渲染不成功的問題
最近在使用echarts做報(bào)表需求,二次生成報(bào)表時(shí)數(shù)據(jù)合并,無法正確顯示。
第一次渲染:

第二次渲染:

可以看到這里的echarts項(xiàng)的series變?yōu)?個(gè)(如上圖),但是渲染后的效果series項(xiàng)還是和第一次相同。
解決辦法:
應(yīng)該設(shè)置mychart.setoption({},true);
原因:
chart.setOption(option,notMerge,lazyUpdate);
option:圖表的配置項(xiàng)和數(shù)據(jù)
notMerge:可選,是否不跟之前設(shè)置的option進(jìn)行合并,默認(rèn)為false,即合并。(這里是導(dǎo)致二次渲染不成功的根本)
lazyUpdate:可選,在設(shè)置完option后是否不立即更新圖表,默認(rèn)為false,即立即更新。
補(bǔ)充知識(shí):請(qǐng)求到數(shù)據(jù)后echarts圖表的重新渲染問題
我就廢話不多說了,大家還是直接看代碼吧~
export default{
data(){
return{
//定義接受數(shù)據(jù)的空數(shù)組
柱狀圖
e2data1:[],
e2data2:[],
}
mounted() {
//加載圖表
this.drawLine();
},
created(){
// 并發(fā)發(fā)送多個(gè)請(qǐng)求
axios.all([this.getTable1Data1()])
.then(axios.spread(function (acct, perms) {
console.log("所有數(shù)據(jù)請(qǐng)求成功");
}));
},
methods:{
getTable1Data1(){
let formData=new FormData;
formData.append("companyName",this.chose);
return axios.post('/StockFirstnfirstout/trendChart',formData)
.then(response=> {
let list=response.data.trendChartOfMonth;
//每次加載前清空接口數(shù)據(jù)
this.e2data1=[];
this.e2data2=[];
list.forEach((value,i)=>{
this.e2data1.push(value.count);
this.e2data2.push(value.saleMonth);
});
//重新渲染圖表
myChart2.setOption({
xAxis: {
data:this.e2data2
},
series: [
{name:'柱狀圖',
data: this.e2data1
}]
});
console.log(this.e2data1);
console.log(this.e2data2);
})
.catch(error=> {
console.log(error);
});
},
// 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
//注意出myChart2的作用域
myChart2 = echarts.init(document.getElementById('zhLine'));
myChart2.setOption({
title: {text: '本月累計(jì)趨勢(shì)圖',
//
textStyle:{
color:'#000', //顏色
fontStyle:'normal', //風(fēng)格
fontWeight:'normal', //粗細(xì)
fontFamily:'Microsoft yahei', //字體
fontSize:16, //大小
align:'center', //水平對(duì)齊
lineHeight:50
},
// title位置
padding:[20, 0, 20, 30]
},
legend: {
data:['環(huán)比',],
//折點(diǎn)提示位置
left:'90%',
top:'5%'
},
grid:{ //顯示數(shù)據(jù)的圖表位于當(dāng)前canvas的坐標(biāo)軸
x:50,
y:80,
borderWidth:1,
},
tooltip: {
trigger: 'axis',
backgroundColor : '#ccc',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
xAxis : [
{ name:'日期',
type : 'category',
data : this.e2data2,
axisLine: {
lineStyle: {
color: '#999'
}
},
axisTick:{
show:false
},
},
],
yAxis : [
{
type : 'value',
name:'臺(tái)數(shù)',
interval: 30,
scale: true,
show:true,
splitLine:{
show:false
},
axisTick:{
show:false
},
nameTextStyle:{
padding: [0,0,0,-20],
color:'#999999'
},
axisLine: {
lineStyle: {
color: '#999'
}
},
},
{
type: 'value',
// name: '溫度',
min: 0,
//取消y軸網(wǎng)格
interval: 25,
scale: true,
show:true,
splitLine:{
show:false
},
axisTick:{
show:false
},
axisLine: {
lineStyle: {
color: '#999'
}
},
}
],
series : [
{
name:'環(huán)比',
type:'line',
stack: '總量',
color:'#fccd35',
symbolSize: 8,
//按右邊y軸顯示
yAxisIndex: 1,
data:[30, 15, 42, 65, 38, 40, 78,50]
},
{
name:'柱狀圖',
type:'bar',
//柱狀圖寬度
barWidth: '13%',
data:this.e2data1,
itemStyle:{
normal:{
color:'#84d1d3'
}
},
},
],
});
}
}
以上這篇解決echarts數(shù)據(jù)二次渲染不成功的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue+swiper實(shí)現(xiàn)時(shí)間軸效果
這篇文章主要為大家詳細(xì)介紹了vue+swiper實(shí)現(xiàn)時(shí)間軸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
基于Vue3+Element Plus 實(shí)現(xiàn)多表單校驗(yàn)demo
表單校驗(yàn)在日常的開發(fā)需求中是一種很常見的需求,通常在提交表單發(fā)起請(qǐng)求前校驗(yàn)用戶輸入是否符合規(guī)則,通常只需formRef.value.validate()即可校驗(yàn),本文給大家介紹基于Vue3+Element Plus 實(shí)現(xiàn)多表單校驗(yàn)demo,感興趣的朋友一起看看吧2024-06-06
VUE v-for循環(huán)中每個(gè)item節(jié)點(diǎn)動(dòng)態(tài)綁定不同函數(shù)的實(shí)例
今天小編就為大家分享一篇VUE v-for循環(huán)中每個(gè)item節(jié)點(diǎn)動(dòng)態(tài)綁定不同函數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑及解決
這篇文章主要介紹了使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

