風向風速圖將Series中的風向風速數據data和xAxis中的時間data一一對應

進入正題之前,先講一講只有一條風向風速曲線的對應方法(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軸一一對應的時間,第二個放風速。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章