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); } }
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); }
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); }
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); }
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); }