進入正題之前,先講一講只有一條風向風速曲線的對應方法(ps:我遭遇的需求是多條風向風速曲線,且每條曲線在某個時間點不一定有數據,這就需要你每條曲線的每個拐點都得和X軸的時間相對應纔可):
var symbolRotateNum = [0,45,90];// 旋轉的度數(風向角度)
var valueNum = [1,2,3];// 風速數值
var seriesData = echarts.util.map(valueNum, function (item, index) {
return {
value: valueNum[index],//這裏直接放風速數據,它會按順序和X軸的時間對應
symbolRotate: 360 - symbolRotateNum[index]//這裏是風向角度,拿360去減
};
});
然後只要吧seriesData放入series.data即可。如下:
option = {
xAxis: {
type: 'category',
data: ['2020-12-1','2020-12-2','2020-12-3']
},
yAxis: {
type: 'value',
// min: 0,
max: max4
},
grid: {
top: '10',
left: '140',
// right: '20',
// bottom: '30'
},
tooltip: {
trigger: 'axis'
},
series: [{
data: seriesData,
type: 'line',
symbol: "image:///templates/app/center/images/arrow-wind.png",
symbolSize: '20',
smooth: true,
itemStyle: {
normal: {
color: "rgb(148, 192, 90)"
}
}
}]
};
以上都很簡單是吧 ,但是到了多條曲線的時候就頭疼了,你會發現你的風向風速數據只會按照順序對應到X軸(就是說如果我12月2號沒有數據,它會把12月3號的數據填到2號來)。
然後官網看文檔看配置項的定義,似乎都沒有明確的方法,網上也沒有類似的文章。
很頭疼,但是任務總不能不寫吧,於是我就自己一個一個的去試。試了一個下午,終於試出來了!(實踐很重要)
把我的代碼貼出來:
for (let i = 0; i < staidList.length; i++){//這裏循環是因爲有多條曲線
var symbolRotateNum = fengxiangList[i];// 旋轉的度數
var valueNum = windspeedList[i];// 風速數值
var data = echarts.util.map(valueNum, function (item, index) {
// return [
// valueNum[index][0],
// valueNum[index][1],
// 0.9545
// // 360 - symbolRotateNum[index][1]
// ];
// return {
// category: valueNum[index][0],
// value: valueNum[index][1],
// symbolRotate: 360 - symbolRotateNum[index][1]
//
// };
return {
value: [valueNum[index][0],valueNum[index][1]],//第一個放時間,第二個放風速
symbolRotate: 360 - symbolRotateNum[index][1]//這個是風向角度
};
});
dataList.push(data);
}
沒什麼複雜的,就是將value中放入一個數組,第一個數據放需要跟X軸一一對應的時間,第二個放風速。