void MeasurePan(object sender, RoutedEventArgs e) { string result = string.Empty; Iterate("Pan", new Action <int>(count => { Stopwatch resampled = new Stopwatch(); Stopwatch nonResampled = new Stopwatch(); ClearChart(); LoadDataEx(count, true); XYDiagram2D xyd2d = Chart.Diagram as XYDiagram2D; xyd2d.EnableAxisXZooming = true; xyd2d.EnableAxisYZooming = true; xyd2d.ZoomIn(null); resampled.Start(); PerofrmScroll(xyd2d); resampled.Stop(); ClearChart(); LoadDataEx(count, false); xyd2d = Chart.Diagram as XYDiagram2D; nonResampled.Start(); PerofrmScroll(xyd2d); nonResampled.Stop(); result += string.Format("{0}, {1}, {2}{3}", count, resampled.ElapsedMilliseconds, nonResampled.ElapsedMilliseconds, Environment.NewLine); })); File.WriteAllText("result_scroll.txt", result); }
protected AxisY2D FindCompatibleAxis(XYDiagram2D diagram, LineSeries2D series) { double minSeriesValue = GetSeriesMinValue(series); double maxSeriesValue = GetSeriesMaxValue(series); // check primary axis bool primaryAxisFits = false; primaryAxisFits = WhetherRangesAreCompatible( (double)diagram.AxisY.ActualRange.ActualMinValue, (double)diagram.AxisY.ActualRange.ActualMaxValue, minSeriesValue, maxSeriesValue); if (primaryAxisFits) { return(diagram.AxisY); } // Check all availabe secondary axes foreach (SecondaryAxisY2D axs in diagram.SecondaryAxesY) { double axsMin = (double)axs.ActualRange.MinValue; double axsMax = (double)axs.ActualRange.MaxValue; if (WhetherRangesAreCompatible(axsMin, axsMax, minSeriesValue, maxSeriesValue)) { return(axs); } } // return null is no compatible axis found. return(null); }
public DoubleDoubleMouseCrosshairCursorProvider(ChartControl chart, XYDiagram2D diagram, LineSeries2D series, Canvas crosshairCursorCanvas, ValueItem valueX, ValueItem valueY, Border verticalLine, Border horizontalLine, AxisX2D axisX, AxisY2D axisY) : base(diagram, axisX, axisY, verticalLine, horizontalLine, valueX, valueY) { this.chart = chart; this.diagram = diagram; this.series = series; this.crosshairCursorCanvas = crosshairCursorCanvas; this.valueX = valueX; this.valueY = valueY; this.verticalLine = verticalLine; this.horizontalLine = horizontalLine; this.axisX = axisX; this.axisY = axisY; chart.MouseMove += ChartMouseMove; valueX.SizeChanged += ValueXSizeChanged; valueY.SizeChanged += ValueYSizeChanged; }
void cbChartDateMeasureUnit_SelectedIndexChanged(object sender, RoutedEventArgs e) { XYDiagram2D diagram = (XYDiagram2D)chartControl.Diagram; DateTimeMeasureUnit unit = (DateTimeMeasureUnit)Enum.Parse(typeof(DateTimeMeasureUnit), cbChartDateMeasureUnit.SelectedItem.ToString()); diagram.AxisX.DateTimeScaleOptions = new ManualDateTimeScaleOptions() { MeasureUnit = unit, GridAlignment = (DateTimeGridAlignment)unit, AutoGrid = false }; switch (unit) { case DateTimeMeasureUnit.Year: diagram.AxisX.Label.TextPattern = "{A:yyyy}"; break; case DateTimeMeasureUnit.Quarter: diagram.AxisX.Label.TextPattern = "{A:q}"; break; case DateTimeMeasureUnit.Month: diagram.AxisX.Label.TextPattern = "{A:y}"; break; default: break; } }
private void Window_Loaded(object sender, RoutedEventArgs e) { // Create a chart. ChartControl chart = new ChartControl(); // Create a diagram. XYDiagram2D diagram = new XYDiagram2D(); chart.Diagram = diagram; // Create a bar series. BarSideBySideSeries2D series = new BarSideBySideSeries2D(); diagram.Series.Add(series); // Add points to the series. series.Points.Add(new SeriesPoint("A", 1)); series.Points.Add(new SeriesPoint("B", 3)); series.Points.Add(new SeriesPoint("C", 5)); series.Points.Add(new SeriesPoint("D", 2)); series.Points.Add(new SeriesPoint("E", 7)); // Add the chart to the window. this.Content = chart; }
// Creates a new form that is invoked on the card click and // shows the chart displaying client data. void DisplayDetailedChart(string title, DataTable dataSource) { DetailedChart detailWindow = new DetailedChart(); detailWindow.Title = title; ChartControl chart = detailWindow.detailedChartControl; XYDiagram2D diagram = new XYDiagram2D(); chart.Diagram = diagram; SplineAreaSeries2D series1 = new SplineAreaSeries2D(); series1.DisplayName = "Actual"; SplineAreaSeries2D series2 = new SplineAreaSeries2D(); series2.DisplayName = "Target"; diagram.Series.AddRange(new Series[] { series1, series2 }); foreach (Series series in diagram.Series) { series.DataSource = dataSource; series.ArgumentDataMember = "Argument"; series.ValueScaleType = ScaleType.Numerical; } series1.ValueDataMember = "Actual"; series2.ValueDataMember = "Target"; detailWindow.ShowDialog(); }
private void OnColorChanged(object sender, EventArgs eventArgs) { ParameterDisplaySettingsViewModel cbvm = sender as ParameterDisplaySettingsViewModel; if (cbvm == null) { throw new ArgumentException("Wrong sender!"); } PsaParameterDataViewModel vm = cbvm.ParamData as PsaParameterDataViewModel; if (graph.IsDisplayed(vm)) { LineSeries2D series = graph.FindSeries(vm) as LineSeries2D; vm.Color = new SolidColorBrush(cbvm.StrokeColor); series.Brush = new SolidColorBrush(cbvm.StrokeColor); SecondaryAxisY2D secAxs = XYDiagram2D.GetSeriesAxisY(series); if (secAxs != null) { XYDiagram2D.GetSeriesAxisY(series).Brush = new SolidColorBrush(cbvm.StrokeColor); } } UpdateScalesSetView(); UpdateScalesComboboxesView(); }
void PerofrmScroll(XYDiagram2D xyd2d) { for (int i = 0; i < 25; i++) { xyd2d.ScrollHorizontally(10); DoEvents(); } }
void PerformZoom(XYDiagram2D xyd2d) { for (int i = 0; i < 5; i++) { xyd2d.ZoomIn(null); DoEvents(); } }
private void CheckAddPanel(StrategyDataItemInfo info) { XYDiagram2D diagram = (XYDiagram2D)Chart.Diagram; while (diagram.Panes.Count <= info.PanelIndex - 1) { diagram.Panes.Add(new XYDiagramPane()); } }
void UpdateSeries(Series series, int index) { if (series is BubbleSeries2D) { InitializeBubbleSeries(series as BubbleSeries2D); return; } else if (series is FinancialSeries2D) { InitializeFinancialSeries(series as FinancialSeries2D); XYDiagram2D diagram = chart.Diagram as XYDiagram2D; if (diagram != null) { AxisY2D.SetAlwaysShowZeroLevel(diagram.ActualAxisY.ActualWholeRange, false); } return; } if (series is PieSeries2D) { PieSeries2D pieSeries = series as PieSeries2D; if (!(pieSeries is NestedDonutSeries2D)) { pieSeries.HoleRadiusPercent = 0; } InitializePieSeries(pieSeries); return; } if (series is FunnelSeries2D) { InitializeFunnelSeries(series as FunnelSeries2D); return; } if (series is RangeBarSeries2D) { RangeBarSeries2D rangeBar = series as RangeBarSeries2D; InitializeRangeBarSeries(series as RangeBarSeries2D, index + 1); series.LabelsVisibility = false; if (rangeBar is RangeBarOverlappedSeries2D && index == 1) { rangeBar.BarWidth = 0.2; } return; } if (series is RangeAreaSeries2D) { InitializeRangeAreaSeries(series as RangeAreaSeries2D); return; } if (series is CircularSeries2D) { InitializePolarSeries(series as CircularSeries2D); return; } InitializeSeries(series, index + 1); }
void FillCustomAxisLabels() { XYDiagram2D diagram = (XYDiagram2D)chart.Diagram; for (int i = 0; i < 1000; i += 120) { TimeSpan duration = TimeSpan.FromMinutes(i); diagram.AxisY.CustomLabels.Add(new CustomAxisLabel(i, String.Format("{0} hours", duration.Hours.ToString()))); } }
void PerofrmScroll(XYDiagram2D xyd2d) { xyd2d.EnableAxisXScrolling = true; xyd2d.EnableAxisYScrolling = true; for (int i = 0; i < 25; i++) { xyd2d.Scroll(HorizontalScrollingDirection.Left, VerticalScrollingDirection.None); DoEvents(); } }
void PerformZoom(XYDiagram2D xyd2d) { xyd2d.EnableAxisXZooming = true; xyd2d.EnableAxisYZooming = true; for (int i = 0; i < 5; i++) { xyd2d.ZoomIn(null); DoEvents(); } }
static void PrepareXYDiagram2D(XYDiagram2D diagram) { if (diagram == null) { return; } diagram.AxisX = new AxisX2D(); diagram.AxisX.Label = new AxisLabel(); diagram.AxisX.Label.Staggered = true; }
private void OnChartControlMouseUp(object sender, MouseButtonEventArgs e) { XYDiagram2D xyDiagram = chartControl.Diagram as XYDiagram2D; if (xyDiagram == null) { return; } xyDiagram.ShowCrosshair(e.GetPosition(chartControl)); }
private void ProcessSelectedScale(LineSeries2D series, ChartScale scale) { var axs = scale.Axis as SecondaryAxisY2D; if (axs == null) { throw new ArgumentException(); } UpdateAxisRangeToNewSeries(axs, series); XYDiagram2D.SetSeriesAxisY(series, axs); }
private void chartControl1_BoundDataChanged(object sender, RoutedEventArgs e) { XYDiagram2D diagram = ((ChartControl)sender).Diagram as XYDiagram2D; Axis2D axisY = diagram.ActualAxisY; axisY.VisualRange = new Range(); double minValue = diagram.Series.Select(s => s.Points.Min(p => p.Value)).Min() * 1.1; double maxValue = diagram.Series.Select(s => s.Points.Max(p => p.Value)).Max() * 1.1; axisY.VisualRange.SetMinMaxValues(minValue, maxValue); }
static void PrepareXYDiagram2D(XYDiagram2D diagram) { if (diagram == null) { return; } diagram.AxisX = new AxisX2D { Label = new AxisLabel { Staggered = true } }; }
public void AddGraph(IPsaParameterDataViewModel vm, Color strokeColor) { current.Add(vm, strokeColor); LineSeries2D series = new LineSeries2D(); series.DataContext = vm; series.Brush = new SolidColorBrush(strokeColor); series.ValueScaleType = ScaleType.Numerical; series.ArgumentScaleType = ScaleType.Numerical; series.MarkerVisible = false; series.ShowInLegend = false; series.Label = new SeriesLabel(); series.LabelsVisibility = false; for (int i = 0; i < vm.Values.Count; i++) { SeriesPoint pt; if (!vm.HasTimestamps) { pt = new SeriesPoint(i, vm.Values[i]); } else { pt = new SeriesPoint(vm.Model.Timestamps[i], vm.Values[i]); } series.Points.Add(pt); } if (graphDiagram.Series.Count > 0) { AxisY2D compatibleAxis = FindCompatibleAxis(graphDiagram, series); if (compatibleAxis == null) { SecondaryAxisY2D newAxis = GenerateNewAxis(series); newAxis.Brush = new SolidColorBrush(strokeColor); graphDiagram.SecondaryAxesY.Add(newAxis); XYDiagram2D.SetSeriesAxisY(series, newAxis); } else { if (compatibleAxis is SecondaryAxisY2D) { UpdateAxisByNewSeries( (SecondaryAxisY2D)compatibleAxis, series); XYDiagram2D.SetSeriesAxisY(series, (SecondaryAxisY2D)compatibleAxis); } } } graphDiagram.Series.Add(series); }
public DoubleDoubleCrosshairCursorProvider(XYDiagram2D diagram, AxisX2D axisX, AxisY2D axisY, Border verticalLine, Border horizontalLine, ValueItem valueX, ValueItem valueY) { this.diagram = diagram; this.axisX = axisX; this.axisY = axisY; this.verticalLine = verticalLine; this.horizontalLine = horizontalLine; this.valueX = valueX; this.valueY = valueY; }
void bindData(bool allowResample) { Series series = new Series(); chartControl1.Series.Add(series); series.View = new LineSeriesView(); series.AllowResample = allowResample; series.BindToData(chartSource, "Argument", "Value"); XYDiagram2D d2d = chartControl1.Diagram as XYDiagram2D; if (d2d != null) { d2d.ZoomingOptions.AxisXMaxZoomPercent = 100000000; d2d.ZoomingOptions.AxisYMaxZoomPercent = 100000000; } }
void chart_BoundDataChanged(object sender, RoutedEventArgs e) { ConstantLines.Clear();//清理上次显示的线条 XYDiagram2D diagram = (XYDiagram2D)cc_CaseStatistics.Diagram; if (diagram.Series[0].Points.Count == 0) { return; } double minPrice = Double.MaxValue; double maxPrice = 0; double averagePrice = 0; foreach (SeriesPoint point in diagram.Series[0].Points) { double price = point.Value; if (price < minPrice) { minPrice = price; } if (price > maxPrice) { maxPrice = price; } averagePrice += price; } averagePrice /= diagram.Series[0].Points.Count; ConstantLine minConstantLine = new ConstantLine(minPrice, "最少"); minConstantLine.Brush = new SolidColorBrush(Colors.Green); minConstantLine.Title.Foreground = new SolidColorBrush(Colors.Green); ConstantLine maxConstantLine = new ConstantLine(maxPrice, "最多"); maxConstantLine.Brush = new SolidColorBrush(Colors.Red); maxConstantLine.Title.Foreground = new SolidColorBrush(Colors.Red); ConstantLine averageConstantLine = new ConstantLine(averagePrice, "平均"); averageConstantLine.Brush = new SolidColorBrush(Color.FromArgb(0xFF, 0x9A, 0xCD, 0x32)); averageConstantLine.Title.Foreground = new SolidColorBrush(Color.FromArgb(0xFF, 0x9A, 0xCD, 0x32)); ConstantLines.AddRange(new ConstantLine[] { minConstantLine, maxConstantLine, averageConstantLine }); foreach (ConstantLine constantLine in ConstantLines) { constantLine.Title.Alignment = ConstantLineTitleAlignment.Far; } }
Type InitDiagram() { XYDiagram2D xyDiagram = new XYDiagram2D(); xyDiagram.SeriesDataMember = "Series"; xyDiagram.AxisX = new AxisX2D(); xyDiagram.AxisX.DateTimeScaleOptions = new ManualDateTimeScaleOptions() { MeasureUnit = DateTimeMeasureUnit.Year, GridAlignment = DateTimeGridAlignment.Year, AutoGrid = false }; xyDiagram.AxisX.WholeRange = new DevExpress.Xpf.Charts.Range(); xyDiagram.AxisY = new AxisY2D(); xyDiagram.AxisY.WholeRange = new DevExpress.Xpf.Charts.Range(); xyDiagram.AxisX.Label = new AxisLabel(); chartControl.Diagram = xyDiagram; return(chartControl.Diagram.GetType()); }
private void Clear() { diagram = new XYDiagram2D(); diagram.AxisX = new AxisX2D(); diagram.AxisX.Label = new AxisLabel(); diagram.AxisX.Label.Staggered = false; diagram.AxisX.Name = "axisX"; diagram.AxisX.TickmarksMinorVisible = false; diagram.AxisX.GridLinesMinorVisible = true; diagram.AxisX.GridLinesVisible = true; diagram.AxisY = new AxisY2D(); diagram.AxisY.Name = "axisY"; diagram.AxisY.GridLinesMinorVisible = true; diagram.AxisY.GridLinesVisible = true; chart.Diagram = diagram; ResetSliders(); }
public DoubleDoubleMovingCrosshairCursorProvider(XYDiagram2D diagram, AxisX2D axisX, AxisY2D axisY, Canvas crosshairCursorCanvas, Series series, Border verticalLine, Border horizontalLine, ValueItem valueX, ValueItem valueY) : base(diagram, axisX, axisY, verticalLine, horizontalLine, valueX, valueY) { this.crosshairCursorCanvas = crosshairCursorCanvas; this.diagram = diagram; this.series = series; this.verticalLine = verticalLine; this.horizontalLine = horizontalLine; }
public void RemoveGraph(IPsaParameterDataViewModel vm) { current.Remove(vm); Series toDelete = null; foreach (Series s in graphDiagram.Series) { IPsaParameterDataViewModel param = s.DataContext as IPsaParameterDataViewModel; if (param != null) { if (param.Type == vm.Type) { toDelete = s; break; } } } // determine axes to delete AxisY2D axsToDelete = XYDiagram2D. GetSeriesAxisY((XYSeries)toDelete); bool axsUsedSomewhereElse = false; foreach (XYSeries s in graphDiagram.Series) { if (s != null && s == toDelete) { continue; } AxisY2D axs = XYDiagram2D.GetSeriesAxisY(s); if (axs != null && axs == axsToDelete) { axsUsedSomewhereElse = true; } } graphDiagram.Series.Remove(toDelete); SecondaryAxisY2D axsToDeleteCast = axsToDelete as SecondaryAxisY2D; if (!axsUsedSomewhereElse && axsToDeleteCast != null) { graphDiagram.SecondaryAxesY. Remove(axsToDeleteCast); } }
void GetDailyChartData() { XYDiagram2D diagram2D = new XYDiagram2D(); BarSideBySideSeries2D barIn = new BarSideBySideSeries2D(); BarSideBySideSeries2D barOut = new BarSideBySideSeries2D(); //List<DataTable> dataTables = new List<DataTable>(); DateTime recent = DateTime.Now; for (int i = 0; i < 5; i++) { DataTable table = ReportDAO.Instance.GetDailyReport(recent); recent = recent.AddDays(-1); foreach (DataRow row in table.Rows) { } } }
void CreateSeries(XYSeries series1, XYSeries series2) { series1.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState; series2.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState; chart.Diagram.Series.Clear(); chart.Diagram.Series.Add(series1); PrepareSeries1(series1); chart.Diagram.Series.Add(series2); PrepareSeries2(series2); if (lbSeries2AxisX.SelectedIndex == 1) { XYDiagram2D.SetSeriesAxisX(SecondSeries, SecondaryAxisX); } if (lbSeries2AxisY.SelectedIndex == 1) { XYDiagram2D.SetSeriesAxisY(SecondSeries, SecondaryAxisY); } }
void lbSeries2AxisY_SelectedIndexChanged(object sender, RoutedEventArgs e) { if (chart != null && SecondSeries != null) { if (lbSeries2AxisY.SelectedIndex == 0) { XYDiagram2D.SetSeriesAxisY(SecondSeries, null); SecondaryAxisY.Visible = false; AxisY.Title.Content = FirstSeries.DisplayName + ", " + SecondSeries.DisplayName + PrimaryPostfixY; } else { XYDiagram2D.SetSeriesAxisY(SecondSeries, SecondaryAxisY); SecondaryAxisY.Visible = true; AxisY.Title.Content = FirstSeries.DisplayName + PrimaryPostfixY; } } }
private void InitialChart() { chart = defectMap; // 關閉十字瞄準游標 chart.CrosshairEnabled = false; // 綁定事件 //chart.CustomDrawSeriesPoint += chart_CustomDrawSeriesPoint; chart.MouseMove += chart_MouseMove; chart.MouseDoubleClick += chart_MouseDoubleClick; // 定義圖表類型 XYDiagram2D diagram = new XYDiagram2D(); // 設定坐標軸最小/最大值、格線類型及刻度 diagram.AxisX = new AxisX2D(); diagram.AxisX.Range = new AxisRange(); diagram.AxisX.Range.MinValue = 0; //diagram.AxisX.Range.MaxValue = 60; diagram.AxisX.GridLinesLineStyle = new LineStyle(); diagram.AxisX.GridLinesLineStyle.DashStyle = DashStyles.Dash; diagram.AxisX.GridSpacing = 1; diagram.AxisX.TickmarksMinorVisible = false; diagram.AxisY = new AxisY2D(); diagram.AxisY.Range = new AxisRange(); diagram.AxisY.Range.MinValue = 0; //diagram.AxisY.Range.MaxValue = 60; diagram.AxisY.GridLinesLineStyle = new LineStyle(); diagram.AxisY.GridLinesLineStyle.DashStyle = DashStyles.Dash; diagram.AxisY.GridSpacing = 1; diagram.AxisY.TickmarksMinorVisible = false; chart.Diagram = diagram; }
public static ChartControl CreatXYChart(SolidColorBrush forecolor, string ChartTitle, List<ChartDataChartCommonData> dtchart) { mausac = 0; ChartControl abc = new ChartControl(); XYDiagram2D dg1 = new XYDiagram2D(); //Tao Tile cho Chart Title nt = new Title(); nt.Content = ChartTitle; nt.Foreground = forecolor; abc.Titles.Add(nt); //Tinh so Series List<string> countsr = (from p in dtchart group p by p.Series into g select g.Key).ToList(); //Creat Diagram abc.Diagram = dg1; //Begin tao guong Pane pane1 = new Pane(); pane1.MirrorHeight = 100;//Do cao guong dg1.DefaultPane = pane1; //End tao guong //Begin set kieu bieu do for (int i = 0; i < countsr.Count; i++) { BarSideBySideSeries2D dgs1 = new BarSideBySideSeries2D() { DisplayName = countsr[i].ToString() };//Neu ko co DisplayName chu thich khong hien thi Quasi3DBar2DModel an1 = new Quasi3DBar2DModel(); dgs1.Model = an1; foreach (ChartDataChartCommonData dr in dtchart)//Tao cac point { if (dr.Series == countsr.ElementAt(i)) { //Tao Series SeriesPoint sr1 = new SeriesPoint(); sr1.Argument = dr.Agrument; sr1.Value = dr.Value; sr1.Tag = mausac.ToString(); dgs1.Points.Add(sr1); mausac++; } } SeriesLabel lbl1 = new SeriesLabel(); dgs1.LabelsVisibility = true;//Hien thi Lablel cho tung vung lbl1.Indent = 10; lbl1.ConnectorThickness = 1; lbl1.ResolveOverlappingMode = ResolveOverlappingMode.Default; dgs1.Label = lbl1; dg1.Series.Add(dgs1); } //Tao chu thich abc.Legend = new Legend() { VerticalPosition = VerticalPosition.BottomOutside, HorizontalPosition = HorizontalPosition.Center, Orientation = Orientation.Horizontal }; //End tao chu thich return abc; }