public void Init(OxyPlot.Wpf.Plot plot, OxyPlot.Wpf.TimeSpanAxis x, OxyPlot.Wpf.LinearAxis y, OxyPlot.Wpf.LineSeries series) { Plot = plot; X = x; Y = y; LineSeries = series; Samples = new ObservableCollection <TestData> { new TestData { Time = new TimeSpan(0, 0, 0), Value = 0, Tag = "A" }, new TestData { Time = new TimeSpan(0, 0, 1), Value = 2, Tag = "B" }, new TestData { Time = new TimeSpan(0, 0, 2), Value = 4, Tag = "C" }, new TestData { Time = new TimeSpan(0, 0, 3), Value = 6, Tag = "D" }, new TestData { Time = new TimeSpan(0, 0, 4), Value = 0, Tag = "E" }, new TestData { Time = new TimeSpan(0, 0, 5), Value = 2, Tag = "F" }, }; Plot.Title = "WPF Plot"; }
private void contructSingleLineSeries(Style _series_style) { OxyPlot.Wpf.LineSeries _series = null; _series = new OxyPlot.Wpf.LineSeries(); LineSeries _seriesModel = (LineSeries)_series.CreateModel(); _seriesModel.Points.AddRange(LineSeries); OxyPlotView.Series.Add(_series); // Style DependencyProperty has to be defined always after adding the series to the view if (_series_style != null) { _series.SetCurrentValue(StyleProperty, _series_style); } AbsoluteMinimumX = LineSeries.Min(element => element.X); AbsoluteMaximumX = LineSeries.Max(element => element.X); AbsoluteMinimumY = LineSeries.Min(element => element.Y); AbsoluteMaximumY = LineSeries.Max(element => element.Y); }
public void InitializeGraphic(List <double> ratings) { OxyPlot.Wpf.Plot plot = new OxyPlot.Wpf.Plot(); OxyPlot.Wpf.LineSeries series = new OxyPlot.Wpf.LineSeries(); for (int i = 0; i < ratings.Count; i++) { series.Items.Add(new DataPoint(i, ratings.ElementAt(i))); } plot.Series.Add(new OxyPlot.Wpf.LineSeries()); plot.Series[0].ItemsSource = series.Items; plot.Axes.Add(new OxyPlot.Wpf.LinearAxis()); plot.Axes[0].Position = OxyPlot.Axes.AxisPosition.Bottom; plot.Axes[0].Title = "Номер популяции"; plot.Axes.Add(new OxyPlot.Wpf.LinearAxis()); plot.Axes[1].Position = OxyPlot.Axes.AxisPosition.Left; plot.Axes[1].Title = "Целевая функция"; chartGrid.Children.Add(plot); }
private void contructMultipleLineSeries(Style _series_style) { constructMultiSetAxes(); bool initExtremes = true; // For each line series in the ViewModel foreach (MultifunctionalChartLineData line in ChartData.LinesData) { OxyPlot.Wpf.LineSeries _wpf_series = new OxyPlot.Wpf.LineSeries(); LineSeries _series = (LineSeries)_wpf_series.CreateModel(); foreach (ChartPoint cp in line.LinePoints) { if (cp.X == null || cp.Y == null) { _series.Points.Add(DataPoint.Undefined); } else { DataPoint dp = new DataPoint(); for (int k = 0; k < OxyPlotView.Axes.Count; k++) { Axis _axisModel = (Axis)Activator.CreateInstance((OxyPlotView.Axes[k].CreateModel()).GetType()); System.Reflection.MethodInfo mi = _axisModel.GetType().GetMethod("ToDouble"); switch (MultifunctionalChartData.AxesPositions[k]) { case AxisPosition.Left: dp.Y = Convert.ToDouble(mi == null ? cp.Y : mi.Invoke(_axisModel, new object[] { cp.Y })); break; case AxisPosition.Bottom: dp.X = Convert.ToDouble(mi == null ? cp.X : mi.Invoke(_axisModel, new object[] { cp.X })); break; default: DllEntryPoint.LogMessage(Xvue.MSOT.Services.Log.EnumLogType.Info, "Warning", $"{Name}.contructMultipleLineSeries: Axis # {(k + 1)}: Unhandled AxisPosition: {Convert.ToString(MultifunctionalChartData.AxesPositions[k])}"); break; } } _series.Points.Add(dp); if (initExtremes) { if (ChartData.MinimumX == null) { AbsoluteMinimumX = dp.X; } if (ChartData.MaximumX == null) { AbsoluteMaximumX = dp.X; } if (ChartData.MinimumY == null) { AbsoluteMinimumY = dp.Y; } if (ChartData.MaximumY == null) { AbsoluteMaximumY = dp.Y; } /* Currently not implemented * AbsoluteMinimumZ = dp.Z; * AbsoluteMaximumZ = dp.Z; */ initExtremes = false; } else { if (dp.X < AbsoluteMinimumX) { AbsoluteMinimumX = dp.X; } if (dp.X > AbsoluteMaximumX) { AbsoluteMaximumX = dp.X; } if (dp.Y < AbsoluteMinimumY) { AbsoluteMinimumY = dp.Y; } if (dp.Y > AbsoluteMaximumY) { AbsoluteMaximumY = dp.Y; } /* Currently not implemented * if (_Z < AbsoluteMinimumZ) { AbsoluteMinimumY = _Z; } * if (_Z > AbsoluteMaximumZ) { AbsoluteMaximumY = _Z; } */ } } } OxyPlotView.Series.Add(_wpf_series); // Style DependencyProperty has to be defined always after adding the series to the view if (_series_style != null) { _wpf_series.SetCurrentValue(StyleProperty, _series_style); } _wpf_series.SetCurrentValue(OxyPlot.Wpf.LineSeries.MarkerStrokeProperty, line.Color); _wpf_series.SetCurrentValue(OxyPlot.Wpf.Series.ColorProperty, line.Color); _wpf_series.SetCurrentValue(OxyPlot.Wpf.LineSeries.MarkerFillProperty, line.Color); _wpf_series.SetCurrentValue(OxyPlot.Wpf.Series.TitleProperty, line.Name); } }