Echartsは、カスタムフローティングペインoption.tooltip.formatter動的データアイテムデータ処理シリーズJSONと2次元配列処理データなどを開発しました。

前の記事の開発タスクを続けると、echartsダイアグラムが必要になりますが、データアイテムが多すぎるため、フローティングフレーム表示の問題がわかりにくくなり、テーブルスタイルと複数のデータ表示に変更する必要があります。

前日に作成された要約:
echarts公式文書文書を読んで理解し、ケースを見つける方が効率的です。

最初は、オプションの外でJSONを使用して数値を2次元配列にアセンブルしたことに気づきませんでし
た。必要なときに取り出してください。

	var json={
    
    };
	for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
			json[DEFECT_CNAME[j]]=new Array();//放入数组
			for (var i = 0; i < 2; i++) {
    
    
				json[DEFECT_CNAME[j]][i] = new Array();
				for (var x= 0; x < PRODUCE_TIME.length; x++) {
    
    
					json[DEFECT_CNAME[j]][i][x] = 0;
				}
			}
		}	
	var j=0;
	for(var i=0;i<list.length;i++){
    
    //遍历查询结果list集
		if(list[i][mapPojo.PRODUCE_TIME.pos].substr(0,timecount)==PRODUCE_TIME[j]){
    
    //相同时间跨度的不同区域数据处理  缺陷个数和面积
			for(var X=0;X<DEFECT_CNAME.length;X++){
    
    
				if(DEFECT_CNAME[X]==list[i][mapPojo.DEFECT_CNAME.pos]){
    
    //同时间段同名数据
					count = json[DEFECT_CNAME[X]][0][j];
					count+=parseInt(list[i][mapPojo.DEFECT_COUNT.pos]);
					json[DEFECT_CNAME[X]][0][j]=count;
					
					count = json[DEFECT_CNAME[X]][1][j];
					count+=parseFloat(list[i][mapPojo.DEFECT_AREA.pos]);
					json[DEFECT_CNAME[X]][1][j]=count;
					break;
				}
			}
		}
		else{
    
    j++;}
	}

効果は次の図に示すとおりです。ここに画像の説明を挿入
次に、ループでシリーズに入れます。

	var series=[];
	   for(var i = 0;i<DEFECT_CNAME.length;i++){
    
    
	       series.push({
    
    
	           name: DEFECT_CNAME[i],
	           type: 'line',
	           smooth: true,
	           data: json[DEFECT_CNAME[i]
	       });
	 }

その結果、series.dataの形式をどのように変更しても、すべてのデータが入力されていることが確認されます。
ここに画像の説明を挿入

ただし、一連のデータはoption.tooltip.formatterに見つからず、操作できません。また、データが配置されているJSONをoption = {}で使用することはできません(同じ方法ではないため)。

ここに画像の説明を挿入

ドキュメントを注意深く検討したところ、オフィシャルがseries.data。echarts-series-line.dataの形式の標準化された定義を持っていることがわかり、例だけを
て、グラフを作成するために逆にしました。効率が低く、エラー率が高いです。私は午前の文書を読んでの重要性を認識。セックス

公式文書を完全に理解した後、データ形式を完全に変更します
。2次元配列は公式仕様に完全に対応しています。

series: [{
      data: [
          // xAxis    yAxis
          [  0,        0,    2  ], // 意思是此点位于 xAxis: '星期一', yAxis: 'a'。
          [  '星期四',  2,    1  ], // 意思是此点位于 xAxis: '星期四', yAxis: 'm'。
          [  2,       'p',   2  ], // 意思是此点位于 xAxis: '星期三', yAxis: 'p'。
          [  3,        3,    5  ]
      ]
  }]

変更されたコードは次のとおりです。

var json={
    
    };
  for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
  	json[DEFECT_CNAME[j]]=new Array();//放入数组
  	for (var i = 0; i < PRODUCE_TIME.length; i++) {
    
    
  		json[DEFECT_CNAME[j]][i] = new Array();
  		for (var x= 0; x < 3; x++) {
    
    
  			if(x==0){
    
    
  				json[DEFECT_CNAME[j]][i][x] = PRODUCE_TIME[i];
  			}else{
    
    
  				json[DEFECT_CNAME[j]][i][x] = 0;
  			}
  		}
  	}
  }	
  console.time('time'); 
  var j=0;
  for(var i=0;i<list.length;i++){
    
    //遍历查询结果list集
  	if(list[i][mapPojo.PRODUCE_TIME.pos].substr(0,timecount)==PRODUCE_TIME[j]){
    
    //相同时间跨度的不同区域数据处理  缺陷个数和面积
  		for(var X=0;X<DEFECT_CNAME.length;X++){
    
    
  			if(DEFECT_CNAME[X]==list[i][mapPojo.DEFECT_CNAME.pos]){
    
    //同时间段同名数据
  				count = json[DEFECT_CNAME[X]][j][1];
  				count+=parseInt(list[i][mapPojo.DEFECT_COUNT.pos]);
  				json[DEFECT_CNAME[X]][j][1]=count;
  				
  				count = json[DEFECT_CNAME[X]][j][2];
  				count+=parseFloat(list[i][mapPojo.DEFECT_AREA.pos]);
  				json[DEFECT_CNAME[X]][j][2]=count;
  				break;
  			}
  		}
  	}
  	else{
    
    j++;}
  }
  console.timeEnd('time'); 	
  
  var series=[];
     for(var i = 0;i<DEFECT_CNAME.length;i++){
    
    
         series.push({
    
    
             name: DEFECT_CNAME[i],
             type: 'line',
             smooth: true,
             data: json[DEFECT_CNAME[i]]
         });
   }

オプションのテストコード:

 option = {
    
    
		    tooltip : {
    
    
		        trigger: 'axis',
		        formatter(params){
    
    
		            for(x in params){
    
    
		        	}
		        }
		    }
		  }

ブラウザのテスト結果を図に示します。
ここに画像の説明を挿入
成功はoption.tooltip.formatteで操作できます。
次に、次のコードを記述してデータをタイプセットします。

tooltip : {
    
    
		        trigger: 'axis',
		        axisPointer: {
    
    
		            type: 'cross',
		            label: {
    
    
		                backgroundColor: '#6a7985'
		            }
		        },
		        formatter: function (params, ticket, callback) {
    
    
		        	var showHtm="";
		            for(x in params){
    
    
		            	showHtm+=params[x].seriesName +"缺陷个数:"+params[x].data[1]+"缺陷面积:"+params[x].data[2]+'<br>';
		            }
		            return showHtm;
		        }
		    },

実装効果を図に示しますここに画像の説明を挿入
。3時間悩んでい問題がようやく解決しました。不幸は偽物のハハハ
です。開発を行うのに最も幸せな時期はニーズを解決する時期です。
ハッピー!

おすすめ

転載: blog.csdn.net/Beatingworldline/article/details/113624733