private void DrawAllSignal() { // Получим панель для рисования GraphPane pane = AllSignalZedGraph.GraphPane; pane.IsFontsScaled = false; pane.Title.IsVisible = false; pane.XAxis.Title.IsVisible = false; pane.YAxis.Title.IsVisible = false; pane.XAxis.Title.Text = "Время (кадр)"; pane.YAxis.Title.Text = "Номер нейрона"; // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы pane.CurveList.Clear(); // Создадим список точек PointPairList list = new PointPairList(); pane.XAxis.Scale.Min = 0; pane.XAxis.Scale.Max = NeuronDataManager.Neurons[0].IntensityCleanData.Count + 10; // Опорные точки выделяться не будут (SymbolType.None) for (int i = 0; i < NeuronDataManager.Neurons.Count; i++) { double[] raw = NeuronDataManager.Neurons[i].IntensityCleanData.ToArray(); double[] x = new double[raw.Length]; //заполним x от 0 до N for (int j = 0; j < x.Length; j++) { x[j] = j; } double color_length = 380.0 + i * (780.0 - 380.0) / NeuronDataManager.Neurons.Count; LineItem myCurve = pane.AddCurve("", x, raw, Colors.waveToColor(color_length), SymbolType.None); myCurve.Line.IsSmooth = true; myCurve.Line.SmoothTension = 1; if (NeuronDataManager.Neurons[i].ID == SelectedID) { myCurve.Line.Width = 4; myCurve.Line.Color = Color.Black; } } // Вызываем метод AxisChange (), чтобы обновить данные об осях. // В противном случае на рисунке будет показана только часть графика, // которая умещается в интервалы по осям, установленные по умолчанию AllSignalZedGraph.AxisChange(); // Обновляем график AllSignalZedGraph.Invalidate(); }
private void SmoothSparkles() { double[] IntensityData = NeuronDataManager.Neurons[0].IntensityCleanData.ToArray(); int L = NeuronDataManager.Neurons[0].IntensityCleanData.Count; int N = NeuronDataManager.Neurons.Count; List <List <double> > AllData = GetNormalisedData(); GraphPane pane = ZDC_ColorMap.GraphPane; pane.CurveList.Clear(); pane.XAxis.Scale.Max = L + 50; PointPairList list; LineItem myCurve = new LineItem(""); myCurve.Line.Width = 1.0F; double lambda; List <double> tmpY; List <double> tmpX; for (int i = 0; i < NeuronDataManager.Neurons.Count; i++) { lambda = i * (740 - 380) / N + 380; for (int j = 0; j < NeuronDataManager.Neurons[i].Sparkles.Count; j++) { tmpY = new List <double>(); tmpX = new List <double>(); for (int k = 0; k < NeuronDataManager.Neurons[i].Sparkles[j].Count; k++) { tmpY.Add(NeuronDataManager.Neurons[i].Sparkles[j][k].Y); tmpX.Add(NeuronDataManager.Neurons[i].Sparkles[j][k].X); } myCurve = pane.AddCurve("", tmpX.ToArray(), tmpY.ToArray(), Color.Gray, SymbolType.None); tmpY = CurveProcessingTools.WindowAVGC(tmpY, 5); myCurve = pane.AddCurve("", tmpX.ToArray(), tmpY.ToArray(), Colors.waveToColor(lambda), SymbolType.None); } } }
private void DrawGray() { double[] IntensityData = NeuronDataManager.Neurons[0].IntensityCleanData.ToArray(); int L = NeuronDataManager.Neurons[0].IntensityCleanData.Count; int N = NeuronDataManager.Neurons.Count; List <List <double> > AllData = GetNormalisedData(); //List<List<List<PointD>>> TMP = GetNormalisedSparkles(); GraphPane pane = ZDC_ColorMap.GraphPane; pane.CurveList.Clear(); pane.XAxis.Scale.Max = L + 50; PointPairList list; LineItem myCurve = new LineItem(""); myCurve.Line.Width = 1.0F; double lambda; //Grays double [] indexes; int Left = 0; int Right = 1; for (int i = 0; i < N; i++) { // точки до первой вспышки list = new PointPairList(); myCurve.Line.Width = 2.0F; IntensityData = AllData[i].ToArray(); for (int k = 0; k <= NeuronDataManager.Neurons[i].SparkleIndexes[0][0]; k++) { list.Add(k, IntensityData[k]); } list.Add(PointPairBase.Missing, PointPairBase.Missing); myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None); // lambda = i * (740 - 380) / N + 380; for (int j = 1; j < NeuronDataManager.Neurons[i].SparkleIndexes.Count; j++) { myCurve.Line.Width = 1.0F; list = new PointPairList(); indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j - 1]; Left = (int)indexes[0]; Right = (int)indexes[1]; for (int k = Left; k <= Right && (k < L); k++) { list.Add(k, IntensityData[k]); } list.Add(PointPairBase.Missing, PointPairBase.Missing); myCurve = pane.AddCurve("", list, Colors.waveToColor(lambda), SymbolType.None); myCurve.Line.Width = 2.0F; list = new PointPairList(); indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j]; Left = (int)indexes[0]; //Right = (int)indexes[0]; for (int k = Right + 1; k < Left && (k < L); k++) { list.Add(k, IntensityData[k]); } list.Add(PointPairBase.Missing, PointPairBase.Missing); myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None); } } ZDC_ColorMap.AxisChange(); ZDC_ColorMap.Invalidate(); }