//呼吸のデータを折れ線グラフに表示する void SetBreathDataToLineGraph(List <Data> breathDataList) { List <Vector2> valueList = new List <Vector2>(); for (int i = 0; i < breathDataList.Count; i++) { float xValueRate = Graph.Time.GetPositionRate(breathDataList[i].GetTime().Value, breathDataList.First().GetTime().Value, breathDataList.Last().GetTime().Value); } Output_Line.lineColor = lineColor; Output_Line.SetPointValues(valueList); //グラフの時間軸も合わせて設定 List <System.DateTime> timeList = breathDataList.Select(ibikiData => ibikiData.GetTime().Value).ToList(); Output_TimeLabel.SetAxis(timeList); }
//いびきの大きさのデータを折れ線グラフに設定する void SetIbikiDataToLineGraph(List <Data> ibikiDataList) { List <Vector2> valueList = new List <Vector2>(); for (int i = 0; i < ibikiDataList.Count; i++) { System.DateTime detectionStartTime = ibikiDataList.First().GetTime().Value; System.DateTime detectionEndTime = ibikiDataList.Last().GetTime().Value.AddSeconds(20); // いびきの大きさ1の打点位置のx座標 float xValueRate1 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value, detectionStartTime, detectionEndTime); // いびきの大きさ2の打点位置のx座標 float xValueRate2 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value.AddSeconds(10), detectionStartTime, detectionEndTime); // いびきの大きさ3の打点位置のx座標 float xValueRate3 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value.AddSeconds(20), detectionStartTime, detectionEndTime); valueList.Add(new Vector2( xValueRate1, ibikiDataList[i].SnoreVolume1)); valueList.Add(new Vector2( xValueRate2, ibikiDataList[i].SnoreVolume2)); valueList.Add(new Vector2( xValueRate3, ibikiDataList[i].SnoreVolume3)); } Output_Line.lineColor = lineColor; Output_Line.SetPointValues(valueList); //グラフの時間軸も合わせて設定 List <System.DateTime> timeList = ibikiDataList.Select( ibikiData => ibikiData.GetTime().Value).ToList(); Output_TimeLabel.SetAxis(timeList); }
//いびきの大きさのデータを折れ線グラフに設定する void SetIbikiDataToLineGraph(List <Data> ibikiDataList) { RemoveIbikiDataFromLineGraph(); //折れ線グラフ初期化 List <Vector2> valueList = new List <Vector2>(); float xValueTotalRate = 0.0f; float yValueTotalRate = 0.0f; float MAX_Y_VALUE = 0.8f; for (int i = 0; i < ibikiDataList.Count; i++) { System.DateTime detectionStartTime = ibikiDataList.First().GetTime().Value; System.DateTime detectionEndTime = ibikiDataList.Last().GetTime().Value.AddSeconds(20); // いびきの大きさ1の打点位置のx座標 float xValueRate1 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value, detectionStartTime, detectionEndTime); // いびきの大きさ2の打点位置のx座標 float xValueRate2 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value.AddSeconds(10), detectionStartTime, detectionEndTime); // いびきの大きさ3の打点位置のx座標 float xValueRate3 = Graph.Time.GetPositionRate( ibikiDataList[i].GetTime().Value.AddSeconds(20), detectionStartTime, detectionEndTime); // 6つの点の平均値の1点を加える if (i % 2 == 0) { // 6つの点の内、最初の3点の情報を保持 xValueTotalRate = xValueRate1 + xValueRate2 + xValueRate3; yValueTotalRate = ibikiDataList[i].SnoreVolume1 + ibikiDataList[i].SnoreVolume2 + ibikiDataList[i].SnoreVolume3; // 最後が3点だけだった場合は、その3点の平均値を if (i == ibikiDataList.Count + 1) { float aveXValueRate = xValueTotalRate / 3.0f; float aveYValueRate = yValueTotalRate / 3.0f; aveYValueRate *= 2; //200単位(最大値800)を100単位にして最大値を400にする if (aveYValueRate > MAX_Y_VALUE) { aveYValueRate = MAX_Y_VALUE; } valueList.Add(new Vector2(aveXValueRate, aveYValueRate)); } } else { // 前に保持した3点と今回取得した3点の合計6点の平均値の1点を加える float aveXValueRate = (xValueTotalRate + xValueRate1 + xValueRate2 + xValueRate3) / 6.0f; float aveYValueRate = (yValueTotalRate + ibikiDataList[i].SnoreVolume1 + ibikiDataList[i].SnoreVolume2 + ibikiDataList[i].SnoreVolume3) / 6.0f; aveYValueRate *= 2; //200単位(最大値800)を100単位にして最大値を400にする if (aveYValueRate > MAX_Y_VALUE) { aveYValueRate = MAX_Y_VALUE; } valueList.Add(new Vector2(aveXValueRate, aveYValueRate)); } // valueList.Add(new Vector2(xValueRate2, ibikiDataList[i].SnoreVolume2)); // valueList.Add(new Vector2(xValueRate3, ibikiDataList[i].SnoreVolume3)); } Output_Line.lineColor = lineColor; Output_Line.SetPointValues(valueList); //グラフの時間軸も合わせて設定 ibikiTimeList = ibikiDataList.Select( ibikiData => ibikiData.GetTime().Value).ToList(); if (scrollFlag) { Output_TimeLabel.SetIbikiAxis(ibikiTimeList); } else { Output_TimeLabel.SetIbikiMinAxis(ibikiTimeList); } }