//AttachData()で自動的に呼び出される public List <BreathGraph.Data> GetBreathDatas() { //CSVから取得した睡眠データをBreathGraph.Dataに変換して返す List <BreathGraph.Data> resultList = new List <BreathGraph.Data>(); foreach (SleepData data in sleepDataList) { DateTime time = data.GetDateTime(); SleepData.BreathState breathState1 = data.GetBreathState1(); SleepData.BreathState breathState2 = data.GetBreathState2(); SleepData.BreathState breathState3 = data.GetBreathState3(); SleepData.HeadDir headDir1 = data.GetHeadDir1(); SleepData.HeadDir headDir2 = data.GetHeadDir2(); SleepData.HeadDir headDir3 = data.GetHeadDir3(); resultList.Add(new BreathGraph.Data( new Time(time), breathState1, breathState2, breathState3, headDir1, headDir2, headDir3)); } return(resultList); }
public Data( Graph.Time time, SleepData.BreathState breathState1, SleepData.BreathState breathState2, SleepData.BreathState breathState3, SleepData.HeadDir headDir1, SleepData.HeadDir headDir2, SleepData.HeadDir headDir3) { this.time = time; this.BreathState1 = breathState1; this.BreathState2 = breathState2; this.BreathState3 = breathState3; this.HeadDir1 = headDir1; this.HeadDir2 = headDir2; this.HeadDir3 = headDir3; }
/// <summary> /// 呼吸グラフ(通常・無呼吸)を表示する /// </summary> /// <param name="breathDataList"></param> /// <param name="labelDataList"></param> void SetBreathDataToBarChart(List <Data> breathDataList, List <LabelData> labelDataList) { List <Vector2> xValueRangeList = new List <Vector2>(); List <float> yValueList = new List <float>(); List <LabelData.Label> labelList = new List <LabelData.Label>(); for (int i = 0; i < breathDataList.Count - 1; i++) { LabelData[] labelDatas = new LabelData[3] { labelDataList[i * 3 + 0], labelDataList[i * 3 + 1], labelDataList[i * 3 + 2] }; SleepData.BreathState breathState1 = breathDataList[i].GetBreathState1(); SleepData.BreathState breathState2 = breathDataList[i].GetBreathState2(); SleepData.BreathState breathState3 = breathDataList[i].GetBreathState3(); SleepData.BreathState[] breathStates = new SleepData.BreathState[3] { breathState1, breathState2, breathState3 }; SleepData.BreathState[] priorityStates = new SleepData.BreathState[4] { SleepData.BreathState.Apnea, SleepData.BreathState.Snore, SleepData.BreathState.Normal, SleepData.BreathState.Empty }; int selectIndex = -1; //呼吸レスが1つでもあれば呼吸レス、 //呼吸レスがなくいびきが1つでもあればいびき、 //呼吸レス、いびきが1つもない(全部快眠)なら快眠 //(色の表示優先度が呼吸レス > いびき > 快眠 な感じですかね) for (int k = 0; k < priorityStates.Length; k++) { for (int j = 0; j < breathStates.Length; j++) { if (breathStates[j] == priorityStates[k]) { selectIndex = j; break; } } if (selectIndex != -1) { break; } } if (selectIndex >= 0) { SleepData.BreathState breathState = breathStates[selectIndex]; float yValueRate = breathLabelList.Where(label => label.GetBreathState().Equals(breathState)).First().GetValueRate(); float xStart = Graph.Time.GetPositionRate( breathDataList[i].GetTime().Value.AddSeconds(0), breathDataList.First().GetTime().Value, breathDataList.Last().GetTime().Value); float xEnd = Graph.Time.GetPositionRate( breathDataList[i].GetTime().Value.AddSeconds(30), breathDataList.First().GetTime().Value, breathDataList.Last().GetTime().Value); Vector2 xValueRange = new Vector2(xStart, xEnd); xValueRangeList.Add(xValueRange); yValueList.Add(yValueRate); labelList.Add(labelDatas[selectIndex].GetLabel()); } } Kaimin.Common.Utility.refineByCombineSameContinuousLabel(ref xValueRangeList, ref yValueList, ref labelList); Output_Bar.SetData(xValueRangeList, yValueList, labelList); }