private static IList <DataPoint> GetDataPoints(ChartSeries series)
        {
            PieSeries pieSeries = series as PieSeries;

            if (pieSeries != null)
            {
                return((IList <DataPoint>)pieSeries.DataPoints);
            }

            CategoricalSeries categoricalSeries = series as CategoricalSeries;

            if (categoricalSeries != null)
            {
                return(categoricalSeries.DataPoints);
            }

            RangeSeries rangeSeries = series as RangeSeries;

            if (rangeSeries != null)
            {
                return(rangeSeries.DataPoints);
            }

            OhlcSeries ohlcSeries = series as OhlcSeries;

            if (ohlcSeries != null)
            {
                return(ohlcSeries.DataPoints);
            }

            ScatterPointSeries scatterPointSeries = (ScatterPointSeries)series;

            return(scatterPointSeries.DataPoints);
        }
        public void CreateSeries()
        {
            RadCartesianChart chart = this.RequestTimeLineChar as RadCartesianChart;

            chart.Series.Clear();
            //指定建立五个序列
            for (int i = 0; i < 5; i++)
            {
                CategoricalSeries series = null;
                if (chart == null)//若图表为null
                {
                    return;
                }
                //创建指定类型的序列
                series = new LineSeries()
                {
                    Stroke          = DefaultPalette.FillEntries.Brushes[i],
                    StrokeThickness = 3,
                    PointTemplate   = chart.Resources["PointTemplate"] as DataTemplate
                };
                series.CategoryBinding = new PropertyNameDataPointBinding("RequestTime");
                series.ValueBinding    = new PropertyNameDataPointBinding("ResponseTime");
                series.SetBinding(ChartSeries.ItemsSourceProperty, new Binding()
                {
                    Path = new PropertyPath("Infos.LineChartCollection[" + i + "]")
                });
                series.ClipToPlotArea = false;
                //序列添加到图表
                chart.Series.Add(series);
            }
        }
Exemplo n.º 3
0
        private void UpdateAxis(CategoricalSeries series, double selectionStart, double selectionEnd)
        {
            if (series == null)
            {
                return;
            }

            LinearAxis axis = series.VerticalAxis as LinearAxis;

            if (axis == null)
            {
                return;
            }

            double min, max;

            this.GetMinAndMax(series.DataPoints, out min, out max);
            if (double.IsNaN(min) || double.IsNaN(max))
            {
                return;
            }

            axis.Minimum = min + ((max - min) * selectionStart);
            axis.Maximum = min + ((max - min) * selectionEnd);
        }
Exemplo n.º 4
0
        private static void AddAnnotations(RadCartesianChart chart, object xCategory)
        {
            chart.Annotations.Add(new CartesianGridLineAnnotation {
                Axis = chart.HorizontalAxis, Value = xCategory, Tag = typeof(ChartUtilities)
            });
            StackPanel dataPointsInfoPanel = new StackPanel();

            foreach (CartesianSeries series in chart.Series)
            {
                CategoricalSeries categoricalSeries = series as CategoricalSeries;
                if (categoricalSeries == null)
                {
                    continue;
                }

                var dataPoint = GetDataPoint(categoricalSeries.DataPoints, xCategory);
                if (dataPoint == null)
                {
                    continue;
                }

                AddIntersectionPoint(chart, GetIntersectionPointTemplate(series), dataPoint);
                ContentPresenter cp = new ContentPresenter();
                cp.ContentTemplate = GetDataPointTemplate(series);
                cp.Content         = dataPoint;
                dataPointsInfoPanel.Children.Add(cp);
            }

            foreach (IndicatorBase indicator in chart.Indicators)
            {
                foreach (var dataPoint in GetDataPoints(indicator, xCategory))
                {
                    AddIntersectionPoint(chart, GetIntersectionPointTemplate(indicator), dataPoint);
                }
            }

            LinearAxis vAxis = (LinearAxis)chart.VerticalAxis;
            CartesianCustomAnnotation infoAnnotation = new CartesianCustomAnnotation();

            infoAnnotation.Tag             = typeof(ChartUtilities);
            infoAnnotation.HorizontalValue = xCategory;
            infoAnnotation.VerticalValue   = vAxis.ActualRange.Maximum;
            infoAnnotation.Content         = PrepareInfoContent(dataPointsInfoPanel);
            chart.Annotations.Add(infoAnnotation);
        }
Exemplo n.º 5
0
        private void PanZoomBar_SelectionChanged(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            CategoricalSeries series = null;
            RadSlider         slider = null;

            if (sender == this.LeftPanZoomBar)
            {
                slider = this.LeftPanZoomBar;
                series = this.chart1.Series[0] as CategoricalSeries;
            }
            if (sender == this.RightPanZoomBar)
            {
                slider = this.RightPanZoomBar;
                series = this.chart1.Series[1] as CategoricalSeries;
            }

            if (slider != null)
            {
                this.UpdateAxis(series, slider.SelectionStart, slider.SelectionEnd);
            }
        }
        private static void OnDrillDownHelperChanged(DependencyObject target, DependencyPropertyChangedEventArgs args)
        {
            RadCartesianChart chart = target as RadCartesianChart;

            if (chart == null)
            {
                return;
            }

            chart.Series.Clear();

            DrillDownHelper driller = args.NewValue as DrillDownHelper;

            if (driller == null)
            {
                return;
            }

            CategoricalSeries series = CreateSeries(driller.CatBinding, driller.ValBinding, driller.Data, driller.SeriesType);

            chart.Series.Add(series);
        }
Exemplo n.º 7
0
        private void UpdateAxis(CategoricalSeries series, double selectionStart, double selectionEnd)
        {
            if (series == null)
            {
                return;
            }

            LinearAxis axis = series.VerticalAxis as LinearAxis;
            if (axis == null)
            {
                return;
            }

            double min, max;
            this.GetMinAndMax(series.DataPoints, out min, out max);
            if (double.IsNaN(min) || double.IsNaN(max))
            {
                return;
            }

            axis.Minimum = min + ((max - min) * selectionStart);
            axis.Maximum = min + ((max - min) * selectionEnd);
        }
Exemplo n.º 8
0
        private void CreateSeries(string seriesType)
        {
            RadCartesianChart chart  = this.chart as RadCartesianChart;
            CategoricalSeries series = null;

            if (chart == null)
            {
                return;
            }
            chart.Series.Clear();

            switch (seriesType)
            {
            case "Bar":
                series = new BarSeries()
                {
                    DefaultVisualStyle = chart.Resources["BorderStyle"] as Style
                };
                break;

            case "Line":
                series = new LineSeries()
                {
                    Stroke          = brush,
                    StrokeThickness = 3,
                    PointTemplate   = chart.Resources["PointTemplate"] as DataTemplate
                };
                break;

            case "Spline":
                series = new SplineSeries()
                {
                    Stroke          = brush,
                    StrokeThickness = 3,
                    PointTemplate   = chart.Resources["PointTemplate"] as DataTemplate
                };
                break;

            case "Area":
                series = new AreaSeries()
                {
                    Fill          = brush,
                    PointTemplate = chart.Resources["PointTemplate"] as DataTemplate
                };
                break;

            case "SplineArea":
                series = new SplineAreaSeries()
                {
                    Fill          = brush,
                    PointTemplate = chart.Resources["PointTemplate"] as DataTemplate
                };
                break;
            }
            series.CategoryBinding = new PropertyNameDataPointBinding("Season");
            series.ValueBinding    = new PropertyNameDataPointBinding("Points");
            series.SetBinding(CategoricalSeries.ItemsSourceProperty, new Binding()
            {
                Path = new PropertyPath("SelectedTeam.Stats")
            });
            series.SetBinding(CategoricalSeries.ShowLabelsProperty, new Binding()
            {
                Path = new PropertyPath("ShowLabels")
            });
            series.ClipToPlotArea = false;

            chart.Series.Add(series);
        }