/// <summary> /// обновление графиков на основе заданных stat_speeds и stat_directions /// </summary> private void drawGraphs() { if (stat_directions == null || stat_speeds == null) { return; } //РАСПРЕДЕЛНИЕ СКОРОСТЕЙ ВЕТРА GraphPane spane = zedGraphControlSpeed.GraphPane; spane.Title.Text = "t(V), %"; spane.XAxis.Title.Text = "Vj, м/с"; spane.YAxis.Title.Text = "t(V), %"; spane.GraphObjList.Clear(); spane.CurveList.Clear(); PointPairList slist = new PointPairList(); for (int i = 0; i < stat_speeds.Values.Count; i++) { slist.Add((stat_speeds.Keys[i] as GradationItem).Average, stat_speeds.Values[i] * 100); } _ = spane.AddCurve("t(V)", slist, Color.Red); zedGraphControlSpeed.AxisChange(); zedGraphControlSpeed.Invalidate(); //РАСПРЕДЕЛЕНИЕ НАПРАВЛЕНИЙ RadarPointList dlist = new RadarPointList(); GraphPane dpane = zedGraphControlDirection.GraphPane; dpane.Title.Text = "t(DD), %"; dpane.XAxis.Title.IsVisible = false; dpane.YAxis.Title.IsVisible = false; dpane.XAxis.MajorGrid.IsVisible = true; dpane.YAxis.MajorGrid.IsVisible = true; dpane.YAxis.MajorGrid.IsZeroLine = false; dpane.CurveList.Clear(); dpane.GraphObjList.Clear(); dlist.Clockwise = true; for (int i = 0; i < 16; i++) { double r = stat_directions.Values[i] * 100; dlist.Add(r, 1); string txt = ((WindDirections16)stat_directions.Keys[i]).Description(); double x = r * Math.Sin(((i) * 22.5d) * Math.PI / 180d); double y = r * Math.Cos(((i) * 22.5d) * Math.PI / 180d); TextObj t = new TextObj(txt, x, y); t.FontSpec.Size = 20; t.FontSpec.IsDropShadow = false; t.FontSpec.Border.IsVisible = false; dpane.GraphObjList.Add(t); } _ = dpane.AddCurve("t(DD)", dlist, Color.Blue); zedGraphControlDirection.AxisChange(); zedGraphControlDirection.Invalidate(); }
private void DrawGraph() { GraphPane pane = zedGraph.GraphPane; pane.CurveList.Clear(); pane.XAxis.MajorGrid.IsVisible = true; pane.YAxis.MajorGrid.IsVisible = true; pane.YAxis.MajorGrid.IsZeroLine = false; // Создаем список точек RadarPointList points = new RadarPointList(); // Т.к. в списке будет 4 точки, то и окружность будет разбиваться на 4 части // Обход точек будет осуществляться против часовой стрелки points.Clockwise = false; // Первая точка - сверху над началом координат. Расстояние до центра = 1 points.Add(1, 1); // Вторая точка - слева от начала координат. Расстояние до центра = 2 points.Add(2, 1); // Третья точка - снизу под началом координат. Расстояние до центра = 3 points.Add(3, 1); // Четвертая точка - справа от начала координат. Расстояние до центра = 4 points.Add(4, 1); // Добавляем кривую по этим четырем точкам LineItem myCurve = pane.AddCurve("", points, Color.Black, SymbolType.None); // Для наглядности нарисуем расстояния от начала координат до каждой из точек ArrowObj arrow1 = new ArrowObj(0, 0, 0, 1); pane.GraphObjList.Add(arrow1); ArrowObj arrow2 = new ArrowObj(0, 0, -2, 0); pane.GraphObjList.Add(arrow2); ArrowObj arrow3 = new ArrowObj(0, 0, 0, -3); pane.GraphObjList.Add(arrow3); ArrowObj arrow4 = new ArrowObj(0, 0, 4, 0); pane.GraphObjList.Add(arrow4); // Отметим начало координат черным квадратиком BoxObj box = new BoxObj(-0.05, 0.05, 0.1, 0.1, Color.Black, Color.Black); pane.GraphObjList.Add(box); zedGraph.AxisChange(); zedGraph.Invalidate(); }