コード例 #1
0
ファイル: OxyPlot_Model.cs プロジェクト: uzaki777/Samples
        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";
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }