echarts繪製波形圖
阿新 • • 發佈:2020-07-15
一、echarts配置項如下:
var option = { animation: true, title: {}, tooltip: { showDelay: 0, }, xAxis: { type: 'value', }, grid: { top: '20%', bottom: '20%' }, yAxis: { min: -90, max: 90, }, series: [{ name: '', type: 'line', showSymbol: false, clip: true, markLine: { symbol: ['none', 'none'], label: { show: true }, }, data: [], }] };
二、效果示例:
三、一些問題:
雖然series的type是line,但我data裡的值是和scatter一樣的散點值。資料庫中的原始資料有波形點數wp(這裡是128)和波形陣列wa(這裡長度為1024),我們需要換成點值陣列[ ...,[1/128*i,wa[i]],...]。
decimal[][] dcw = new decimal[1024][]; for (int i = 0; i < 1024; i++) { dcw[i]= new decimal[2] { 1/wp * i, wa[i] }; }
x軸的刻度是自動生成的,有時候顯示很蛋疼。這裡x軸座標顯示成0-8的整數看起來非常理想,但我也不知道為什麼會顯示成這樣。y軸的刻度是自動的,有時候並不會等分,強行等分官方文件裡說是不推薦的?設定splitNumber和interval可以保證等分間隔。·
yAxis: { min: -90, max: 90, splitNumber: 6, interval: 30}
四、簡單示例原始碼
百度網盤連結: https://pan.baidu.com/s/14688L45HXF3Up41dHDwUig 提取碼: mfth
檔案訪問跨域問題,通過npm安裝live-server,在專案所在的資料夾下執行live-server
為了看效果可以直接將data.json中的座標陣列複製貼上到html中。
<!DOCTYPEhtml> <htmllang="en"><head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>Document</title> <scriptsrc="js/jquery-3.3.1.js"></script> <scriptsrc="js/echarts.js"></script> <style> .justify-content-around{ -ms-flex-pack:distribute!important; justify-content:space-around!important; }
.flex-column{ -ms-flex-direction:column!important; flex-direction:column!important; }
.flex-wave{ display:flex; justify-content:center; align-items:center; height:400px; width:40%; border:1pxsolid#D3C0FA; min-width:440px; max-width:600px; }
.waveform{ border:1pxsolid; border-color:burlywood; height:190px; width:100%; }
.waveform-c{ height:100%; width:100%; } </style> </head>
<body> <divclass="flex-columnflex-wavejustify-content-around"> <divclass="waveform"> <divclass="waveform-c"id="wavechartx">x波形</div> </div> <divclass="waveform"> <divclass="waveform-c"id="wavecharty">y波形</div> </div> <script> varwavechart1=echarts.init(document.getElementById('wavechartx')); varwavechart2=echarts.init(document.getElementById('wavecharty')); varoption={ animation:true, title:{}, tooltip:{ showDelay:0, }, xAxis:{ type:'value', }, grid:{ top:'20%', bottom:'20%' }, yAxis:{ min:-90, max:90, }, series:[{ name:'', type:'line', showSymbol:false, clip:true, markLine:{ symbol:['none','none'], label:{show:true}, }, data:[], }] }; option.title.text="X波形"; wavechart1.setOption(option); option.title.text="Y波形"; wavechart2.setOption(option); setTimeout(function(){ window.onresize=function(){ wavechart1.resize(); wavechart2.resize(); } },200)
//賦值data資料 $.ajax({ url:"data.json", dataType:"json", cache:false, success:function(result){ option.title.text="X波形"; option.series[0].data=result.wavedata1; wavechart1.setOption(option); option.series[0].data=result.wavedata2; option.title.text="Y波形"; wavechart2.setOption(option); } }); </script> </div> </body>
</html>