void UptadeSeries(Series series, XYDiagramPaneBase pane, AxisYBase axis) { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)series.View; view.AxisY = axis; view.Pane = pane; }
protected virtual Series CreateSeries(StrategyDataItemInfo info) { CheckAddPanel(info); Series res = null; if (info.ChartType == ChartType.CandleStick) { res = CreateCandleStickSeries(info); } if (info.ChartType == ChartType.Line) { res = CreateLineSeries(info); } if (info.ChartType == ChartType.Bar) { res = CreateBarSeries(info); } if (info.ChartType == ChartType.Area) { res = CreateAreaSeries(info); } if (info.ChartType == ChartType.Dot) { res = CreatePointSeries(info); } XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View; if (info.PanelIndex > 0) { view.Pane = ((XYDiagram2D)Chart.Diagram).Panes[info.PanelIndex - 1]; } return(res); }
public void UpdateIndicator(ChartControl chart, XYDiagramSeriesViewBase seriesView, bool indicatorVisible) { if (this.indicatorVisible != indicatorVisible) { if (indicatorVisible) { Indicator indicator = CreateIndicator(); if (indicator != null) { indicator.Tag = GetHashCode(); indicator.Name = IndicatorName; indicator.ShowInLegend = true; seriesView.Indicators.Add(indicator); if (indicator is SeparatePaneIndicator) { ChartHelper.InitializeSeparatePaneIndicator(chart, (SeparatePaneIndicator)indicator); } } } else { int tag = GetHashCode(); foreach (Indicator indicator in seriesView.Indicators) { if (indicator.Tag is int && (int)indicator.Tag == tag) { ChartHelper.RemoveIndicator(chart, seriesView, indicator); break; } } } this.indicatorVisible = indicatorVisible; } }
public void AddSeriesPaneToChart(string textFormatString, object[] values, string[] labelStrings, Color color) { object[] array = values; string[] months = labelStrings; Series series = GetSeries(textFormatString, color, array, months); int seriesPosition = chartControl1.Series.Add(series); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)series.View; XYDiagram diag = chartControl1.Diagram as XYDiagram; int axesPosition = diag.SecondaryAxesY.Add(new SecondaryAxisY()); if (seriesPosition > 0) { XYDiagramPane pane = new XYDiagramPane(); pane.SizeMode = PaneSizeMode.UseWeight; diag.Panes.Add(pane); diag.SecondaryAxesY[axesPosition].Alignment = AxisAlignment.Near; diag.SecondaryAxesY[axesPosition].GridLines.Visible = true; view.AxisY = diag.SecondaryAxesY[axesPosition]; view.Pane = pane; } else { diag.SecondaryAxesY[seriesPosition].Visible = false; view.AxisX.Label.Angle = 90; } diag.EnableZooming = true; diag.EnableScrolling = true; chartControl1.Height += 400; }
public void barchart_BoundDataChanged(object sender, EventArgs e) { var chart = (WebChartControl)sender; for (int i = 0; i < chart.Series.Count(); i++) { var x = chart.Series[i]; var sname = x.Name; Debug.WriteLine(String.Format("sname={0}", sname)); //Color mycolor = _settings.colors[i % _settings.colors.Count]; //((SideBySideBarSeriesView)chart.Series[i].View).Color = mycolor; //((SideBySideBarSeriesView)chart.Series[i].View).FillStyle.FillMode = FillMode.Solid; } //https://documentation.devexpress.com/WindowsForms/4942/Controls-and-Libraries/Chart-Control/Examples/Chart-Elements/How-to-Display-Automatically-Created-Series-in-Separate-Panes if (chart.Series.Count > 0) { // Obtain a diagram and clear its collection of panes. XYDiagram diagram = (XYDiagram)chart.Diagram; diagram.Panes.Clear(); // Create a pane for each series. for (int i = 1; i < chart.Series.Count; i++) { XYDiagramPane pane = new XYDiagramPane("The Pane's Name"); diagram.Panes.Add(pane); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View; //view.Indicators.Add(new DataSourceBasedErrorBars //{ // Direction = ErrorBarDirection.Both, // Name = "SD", // Color = Color.Black, // PositiveErrorDataMember = "SD", // NegativeErrorDataMember = "SD" //}); view.Pane = pane; diagram.PaneLayout.Direction = PaneLayoutDirection.Horizontal; } } }
public DXCheckItemMainSecondaryAxisY(ChartControl chartControl) : base(chartControl, Strings.SecondaryAxes.secondaryAxisY) { XYDiagramSeriesViewBase secondSeriesView = chartControl.Series.Count > 1 ? chartControl.Series[1].View as XYDiagramSeriesViewBase : null; if (SecondaryAxisY != null && secondSeriesView != null && secondSeriesView.AxisY == SecondaryAxisY) { Checked = SecondaryAxisY.Visible; Enabled = true; } else { Checked = false; Enabled = false; } }
public void AssignSeriesToPane(ScatterplotSeries scatseries, List <string> panenames) { foreach (string p in panenames) { // check whether series should be added to this pane. for (int i = 0; i < chart.Series.Count; i++) { if (scatseries.list_dxseriespoints[i].panename == p) { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View; view.Pane = xydiagram.Panes[p]; } } xydiagram.DefaultPane.Visibility = ChartElementVisibility.Hidden; } }
private void OnChartBoundDataChanged(object sender, EventArgs e) { ChartControl chart = (ChartControl)sender; if (chart.Series.Count > 0) { XYDiagram diagram = (XYDiagram)chart.Diagram; diagram.Panes.Clear(); for (int i = 1; i < chart.Series.Count; i++) { XYDiagramPane pane = new XYDiagramPane(String.Format(@"Pane {0}", i)); diagram.Panes.Add(pane); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View; view.Pane = pane; } } }
private void SetChartType() { XYDiagram diagram = (XYDiagram)chartControl1.Diagram; if (rbChartType.SelectedIndex == 0) { diagram.Panes.Clear(); for (int i = 1; i < chartControl1.Series.Count; i++) { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl1.Series[i].View; view.Pane = diagram.DefaultPane; chartControl1.Series[i].CheckedInLegend = true; chartControl1.Series[i].CheckableInLegend = true; } } if (rbChartType.SelectedIndex > 0 && chartControl1.Series.Count > 0) { diagram.Panes.Clear(); for (int i = 1; i < chartControl1.Series.Count; i++) { XYDiagramPane pane = new XYDiagramPane($@"Pane {i}"); diagram.Panes.Add(pane); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl1.Series[i].View; view.Pane = pane; chartControl1.Series[i].CheckedInLegend = true; chartControl1.Series[i].CheckableInLegend = true; } } if (rbChartType.SelectedIndex == 1) { diagram.PaneLayout.Direction = PaneLayoutDirection.Vertical; diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Linear; } else if (rbChartType.SelectedIndex == 2) { diagram.PaneLayout.Direction = PaneLayoutDirection.Horizontal; diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Linear; } else if (rbChartType.SelectedIndex == 3) { diagram.PaneLayout.AutoLayoutMode = PaneAutoLayoutMode.Grid; } }
protected virtual Series CreateSeries(StrategyDataItemInfo info) { CheckAddPanel(info); Series res = null; if (info.ChartType == ChartType.ConstantX || info.ChartType == ChartType.ConstantY) { CreateConstantLines(info); return(null); } if (info.ChartType == ChartType.CandleStick) { res = CreateCandleStickSeries(info); } if (info.ChartType == ChartType.Line || info.ChartType == ChartType.StepLine) { res = CreateLineSeries(info); } if (info.ChartType == ChartType.Bar) { res = CreateBarSeries(info); } if (info.ChartType == ChartType.Area || info.ChartType == ChartType.StepArea) { res = CreateAreaSeries(info); } if (info.ChartType == ChartType.Dot) { res = CreatePointSeries(info); } XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View; if (info.PanelName != "Default") { view.Pane = ((XYDiagram)Chart.Diagram).Panes[info.PanelName]; view.AxisY = ((XYDiagram)Chart.Diagram).SecondaryAxesY[info.AxisYName]; res.Legend = Chart.Legends[info.PanelName]; } else { } return(res); }
private void bsSeries_GetItemData(object sender, EventArgs e) { if (this.bsSeries.ItemLinks.Count != 0) { return; } XYDiagram dg = (XYDiagram)this.chartControl.Diagram; if (dg == null) { return; } List <XYDiagramPaneBase> panes = new List <XYDiagramPaneBase>(); panes.Add(dg.DefaultPane); foreach (XYDiagramPaneBase pane in dg.Panes) { panes.Add(pane); } foreach (XYDiagramPaneBase item in panes) { BarSubItem paneMenu = new BarSubItem(this.barManager1, item.Name); this.bsSeries.ItemLinks.Add(paneMenu); foreach (Series s in this.chartControl.Series) { XYDiagramSeriesViewBase v = (XYDiagramSeriesViewBase)s.View; if (v.Pane != item) { continue; } BarCheckItem ch = new BarCheckItem(this.barManager1) { Caption = s.Name, Checked = true }; ch.AllowStubGlyph = DefaultBoolean.False; ch.CloseSubMenuOnClick = false; ch.Tag = s; ch.CheckedChanged += OnSeriesCheckedChanged; paneMenu.ItemLinks.Add(ch); } } }
public static void RemoveIndicator(ChartControl chart, XYDiagramSeriesViewBase view, Indicator indicator) { SeparatePaneIndicator separatePaneIndicator = indicator as SeparatePaneIndicator; if (separatePaneIndicator != null) { foreach (Legend legend in chart.Legends) { if (legend.Tag == separatePaneIndicator.Tag) { chart.Legends.Remove(legend); break; } } XYDiagram diagram = chart.Diagram as XYDiagram; if (diagram != null) { foreach (XYDiagramPane pane in diagram.Panes) { if (pane.Tag == separatePaneIndicator.Tag) { diagram.Panes.Remove(pane); break; } } foreach (SecondaryAxisY axisY in diagram.SecondaryAxesY) { if (axisY.Tag == separatePaneIndicator.Tag) { diagram.SecondaryAxesY.Remove(axisY); break; } } } } view.Indicators.Remove(indicator); }
private void OnFormLoad(object sender, EventArgs e) { Series year2003Series = new Series(); year2003Series.Name = "2003"; year2003Series.ArgumentDataMember = "Region"; year2003Series.ValueDataMembers[0] = "GSP"; year2003Series.FilterString = @"[Year] == 2003"; Series year2004Series = new Series(); year2004Series.Name = "2004"; year2004Series.ArgumentDataMember = "Region"; year2004Series.ValueDataMembers[0] = "GSP"; year2004Series.FilterString = @"[Year] == 2004"; chartControl.Series.AddRange(year2003Series, year2004Series); XYDiagram diagram = (XYDiagram)chartControl.Diagram; XYDiagramPane secondPane = new XYDiagramPane("Second Pane"); diagram.Panes.Add(secondPane); Legend secondLegend = new Legend("Second Legend") { DockTarget = secondPane, AlignmentHorizontal = LegendAlignmentHorizontal.Right, AlignmentVertical = LegendAlignmentVertical.Top }; chartControl.Legends.Add(secondLegend); XYDiagramSeriesViewBase xyView = (XYDiagramSeriesViewBase)year2004Series.View; year2004Series.Legend = secondLegend; xyView.Pane = secondPane; }
public void CreateBarchart(DescStats statstable) //, string xaxisvar, string colorsvar, string maintitle ) { chart.AxisWholeRangeChanged += LogAxesRangeWhole; //chart.AxisVisualRangeChanged += LogAxesRangeVisual; string mycolorvar; if (_settings.colorvar == "none") { mycolorvar = (statstable.dt.ColumnNames().Contains("All")) ? "All" : _settings.xaxisvar; } else { mycolorvar = _settings.colorvar; } List <string> colors_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(mycolorvar)).Distinct().ToList(); List <string> xaxis_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.xaxisvar)).Distinct().ToList(); List <string> panes_levels = new List <string>(); if (_settings.panelvar != "none") { panes_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.panelvar)).Distinct().ToList(); panes_levels.Sort(); } //for (int i = 0; i < colors_levels.Count; i++) //{ // string current_color_lev = colors_levels[i]; //} foreach (Series ser in chart.Series) { Debug.WriteLine(String.Format("arg data member:[{0}] color data member:[{1}]", ser.ArgumentDataMember, ser.ColorDataMember)); } BarchartSeries barseries = new BarchartSeries(statstable.dt, _settings.xaxisvar, _settings.colorvar, _settings.panelvar, _settings.colors, colors_levels); foreach (DxSeriesPoints sp in barseries.list_dxseriespoints) { Series s = new Series(); s.Points.AddRange(sp.seriesPoints); SideBySideBarSeriesView vw = new SideBySideBarSeriesView(); s.View = vw; var thesd = sp.seriesPointsSD[0].Values[0]; vw.Indicators.Add(new FixedValueErrorBars { Direction = ErrorBarDirection.Both, Name = "SD", Color = Color.Black, PositiveError = thesd, NegativeError = thesd }); chart.Series.Add(s); } Debug.WriteLine(String.Format("***************************** INIT # of Panes: {0}", xydiagram.Panes.Count)); //Additional Panes if (panes_levels.Count > 0) { xydiagram.Panes.Clear(); Debug.WriteLine(String.Format("***************************** After CLEAR # of Panes: {0}", xydiagram.Panes.Count)); foreach (string p in panes_levels) { // Obtain a diagram and clear its collection of panes. XYDiagramPane pane = new XYDiagramPane(p); xydiagram.Panes.Add(pane); pane.Title.Text = p; pane.Title.Visibility = DefaultBoolean.True; xydiagram.PaneLayout.Direction = _settings.panesLayoutDirection; // PaneLayoutDirection.Horizontal; Debug.WriteLine(String.Format("********************************** # of Panes: {0} {1}", xydiagram.Panes.Count, p)); // check whether series should be added to this pane. for (int i = 0; i < chart.Series.Count; i++) { // if (sps[i].panename == p) if (barseries.list_dxseriespoints[i].panename == p) { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View; view.Pane = xydiagram.Panes[p]; } } xydiagram.DefaultPane.Visibility = ChartElementVisibility.Hidden; } } //No Additional Panes else { for (int i = 0; i < chart.Series.Count; i++) { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View; view.Pane = xydiagram.DefaultPane; } } chart.DataBind(); //Adjust axis range if needed if (_settings.miny != -999 && _settings.maxy != -999) { double y1 = _settings.miny; double y2 = _settings.maxy; //diag.AxisY.VisualRange.SetMinMaxValues(y1, y2); xydiagram.AxisY.WholeRange.SetMinMaxValues(y1, y2); xydiagram.AxisY.VisualRange.SetMinMaxValues(y1, y2); } chart.Width = _settings.W; chart.Height = _settings.H; #region Titles if (_settings.numvars.Count == 1) { AddTitles(_settings.title, _settings.subtitle, "", String.Format("{0} Mean (SD)", _settings.numvars[0])); } else { AddTitles(_settings.title, _settings.subtitle, "", "Mean (SD)"); } #endregion chart.BorderOptions.Color = Color.White; this.LegendByColorLevels(_settings.colors, colors_levels); chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; }
public void Draw2PaneDiagram(ChartControl chartControl, DataTable dt, string[] fieldN, string[] seriesN, string axisXN, string title) //将图形分为两个窗格显示 { for (int i = 0; i < fieldN.Count(); i++) { Series series = new Series(seriesN[i], ViewType.Line); series.DataSource = dt; series.ArgumentScaleType = ScaleType.DateTime; //x轴参数类型 series.ArgumentDataMember = axisXN; //x轴获取指定字段的列 series.ValueDataMembers.AddRange(fieldN[i]); //y轴获取指定字段的列 ((LineSeriesView)series.View).Color = COLORS[i]; chartControl.Series.Add(series); } XYDiagram diagram = (XYDiagram)chartControl.Diagram; diagram.Panes.Clear(); XYDiagramPane pane = new XYDiagramPane(); diagram.Panes.Add(pane); for (int i = chartControl.Series.Count / 2; i < chartControl.Series.Count; i++) //将另一半折线放入另一窗格中 { XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chartControl.Series[i].View; view.Pane = pane; } diagram.AxisX.SetVisibilityInPane(true, diagram.DefaultPane); //设置默认显示的坐标轴 diagram.PaneDistance = 5; diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; //水平方向放置 diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Hour; //最小刻度 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Day; //最小显示刻度 if (dt.Rows.Count > 0 && !dt.Rows[dt.Rows.Count - 1].IsNull(fieldN[0])) { int i = 0; while (dt.Rows[i].IsNull(fieldN[0])) { i++; } if (Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) - Convert.ToInt32(dt.Rows[i][fieldN[0]]) < 3) //如果两折线的值相差不大,那么缩小y轴范围 { diagram.AxisY.WholeRange.MinValue = Convert.ToInt32(dt.Rows[i][fieldN[0]]) - 2; //y轴起始刻度 diagram.AxisY.WholeRange.MaxValue = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) + 1; } else { diagram.AxisY.WholeRange.MinValue = Convert.ToInt32(dt.Rows[i][fieldN[0]]) - 7; diagram.AxisY.WholeRange.MaxValue = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][fieldN[0]]) + 5; } } diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; diagram.AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd HH:mm"; diagram.AxisX.Title.Visible = true; diagram.AxisY.Title.Visible = true; if (seriesN[0].Contains("水位")) { diagram.AxisY.Title.Text = "水位(m)"; } else if (seriesN[0].Contains("流量")) { diagram.AxisY.Title.Text = "流量(m³/s)"; } else if (seriesN[0].Contains("水量")) { diagram.AxisY.Title.Text = "水量(m³)"; } diagram.AxisX.Title.Text = "监测时间"; diagram.AxisY.Title.Alignment = StringAlignment.Far; diagram.AxisY.Title.Visible = true; diagram.AxisY.Title.Font = new Font("宋体", 9.0f); diagram.AxisX.Title.Alignment = StringAlignment.Far; diagram.AxisX.Title.Visible = true; diagram.AxisX.Title.Font = new Font("宋体", 9.0f); ((XYDiagram)chartControl.Diagram).EnableAxisXZooming = true; //允许x轴缩放 ((XYDiagram)chartControl.Diagram).EnableAxisXScrolling = true; //允许x轴移动 chartControl.CrosshairOptions.ShowArgumentLabels = true; //移动鼠标时动态显示Y轴数据标签 chartControl.CrosshairOptions.ShowArgumentLine = true; //显示Y轴线 chartControl.CrosshairOptions.ArgumentLineColor = Color.Blue; chartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //增加示意图 chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Left; chartControl.Titles.Add(new ChartTitle()); //增加表名 chartControl.Titles[0].Text = title; }
protected virtual Series CreateSeries(StrategyDataItemInfo info) { CheckAddPanel(info); Series res = null; if (info.ChartType == ChartType.ConstantX || info.ChartType == ChartType.ConstantY) { CreateConstantLines(info); return(null); } if (info.ChartType == ChartType.CandleStick) { res = CreateCandleStickSeries(info); } if (info.ChartType == ChartType.Line || info.ChartType == ChartType.StepLine) { res = CreateLineSeries(info); } if (info.ChartType == ChartType.Bar) { res = CreateBarSeries(info); } if (info.ChartType == ChartType.Area || info.ChartType == ChartType.StepArea) { res = CreateAreaSeries(info); } if (info.ChartType == ChartType.Dot) { res = CreatePointSeries(info); } if (res != null) { if (res.Points != null && res.Points.Count > BigDataCount) { Chart.SelectionMode = ElementSelectionMode.None; Chart.RuntimeHitTesting = false; } res.DataSourceSorted = true; res.SeriesPointsSorting = SortingMode.None; } IResizeableArray array = res.DataSource as IResizeableArray; if (array != null && array.Count > BigDataCount) // optimization { PointSeriesView view2 = res.View as PointSeriesView; if (view2 != null) { view2.AggregateFunction = SeriesAggregateFunction.None; } } XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)res.View; if (info.PanelName != "Default") { view.Pane = ((XYDiagram)Chart.Diagram).Panes[info.PanelName]; view.AxisY = ((XYDiagram)Chart.Diagram).SecondaryAxesY[info.AxisYName]; if (((XYDiagram)Chart.Diagram).SecondaryAxesX[info.AxisXName] != null) { view.AxisX = ((XYDiagram)Chart.Diagram).SecondaryAxesX[info.AxisXName]; } res.Legend = Chart.Legends[info.PanelName]; } else { } return(res); }
private void addNewPic(DataTable dt) { // Create a chart. // ChartControl chart = chartControl2;//= chart;//= new ChartControl(); chart.Series.Clear(); // Create an empty Bar series and add it to the chart. Series series = new Series("裂缝半长", ViewType.Spline); chart.Series.Add(series); // Generate a data table and bind the series to it. series.DataSource = dt; // Specify data members to bind the series. series.ArgumentScaleType = ScaleType.Numerical; series.ArgumentDataMember = "time"; series.ValueScaleType = ScaleType.Numerical; series.ValueDataMembers.AddRange(new string[] { "L" }); ((PointSeriesView)series.View).Color = Color.FromArgb(125, Color.Green); // Create an empty Bar series and add it to the chart. Series series1 = new Series("缝宽", ViewType.Spline); chart.Series.Add(series1); // Generate a data table and bind the series to it. series1.DataSource = dt; // Specify data members to bind the series. series1.ArgumentScaleType = ScaleType.Numerical; series1.ArgumentDataMember = "time"; series1.ValueScaleType = ScaleType.Numerical; series1.ValueDataMembers.AddRange(new string[] { "W0" }); ((PointSeriesView)series1.View).Color = Color.FromArgb(125, Color.Red); chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; //SecondaryAxisX myAxisX = new SecondaryAxisX("watercutx"); chart.CrosshairOptions.ShowArgumentLabels = true; chart.CrosshairOptions.ShowArgumentLine = true; chart.CrosshairOptions.ShowValueLabels = true; chart.CrosshairOptions.ShowValueLine = true; chart.CrosshairOptions.ValueLineColor = Color.DarkBlue; chart.CrosshairOptions.ArgumentLineColor = Color.DarkBlue; chart.CrosshairOptions.ShowCrosshairLabels = false; //series1.CrosshairLabelPattern = series1.Name + ":{V:F0}"; //series2.CrosshairLabelPattern = series1.Name + ":{V:F0}"; // chart.CrosshairOptions.sh = true; //series2.CrosshairOptions.ShowArgumentLabels rosshairOptions.ShowValueLabels // series2.CrosshairOptions.sho CrosshairOptions.ShowValueLine, //this.Controls.Add(); XYDiagram diagram = (XYDiagram)chart.Diagram; diagram.Panes.Clear(); diagram.SecondaryAxesY.Clear(); diagram.SecondaryAxesX.Clear(); // Enable the diagram's scrolling. diagram.EnableAxisXScrolling = false; diagram.EnableAxisYScrolling = false; // Customize the appearance of the axes' grid lines. diagram.AxisX.GridLines.Visible = true; diagram.AxisX.GridLines.MinorVisible = false; diagram.AxisY.GridLines.Visible = true; diagram.AxisY.GridLines.MinorVisible = true; //diagram.AxisY.Range.SetInternalMinMaxValues(1, 12); // Customize the appearance of the X-axis title. diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram.AxisX.Title.Alignment = StringAlignment.Center; diagram.AxisX.Title.Text = "时间(min)"; diagram.AxisX.Title.TextColor = Color.Black; diagram.AxisX.Title.Antialiasing = true; diagram.AxisX.Title.Font = new Font("Microsoft YaHei", 10); diagram.AxisX.WholeRange.SideMarginsValue = 0; // Customize the appearance of the Y-axis title. diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram.AxisY.Title.Alignment = StringAlignment.Center; diagram.AxisY.Title.Text = "缝宽(mm)"; diagram.AxisY.Title.TextColor = Color.Black; diagram.AxisY.Title.Antialiasing = true; diagram.AxisY.Title.Font = new Font("Microsoft YaHei", 10); XYDiagramPane pane = new XYDiagramPane("留白"); diagram.Panes.Add(pane); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[0].View; int axesPosition = diagram.SecondaryAxesY.Add(new SecondaryAxisY()); diagram.SecondaryAxesY[axesPosition].Alignment = AxisAlignment.Near; diagram.SecondaryAxesY[axesPosition].GridLines.Visible = true; diagram.SecondaryAxesY[axesPosition].GridLines.MinorVisible = true; view.AxisY = diagram.SecondaryAxesY[axesPosition]; int axesPosition2 = diagram.SecondaryAxesX.Add(new SecondaryAxisX()); diagram.SecondaryAxesX[axesPosition2].Alignment = AxisAlignment.Near; diagram.SecondaryAxesX[axesPosition2].GridLines.Visible = true; view.AxisX = diagram.SecondaryAxesX[axesPosition2]; view.AxisX.WholeRange.SideMarginsValue = 0; diagram.SecondaryAxesX[axesPosition2].Title.Text = "时间(min)"; diagram.SecondaryAxesY[axesPosition].Title.Text = "缝长(m)"; diagram.SecondaryAxesX[axesPosition2].Title.Font = new Font("Microsoft YaHei", 10, FontStyle.Bold); diagram.SecondaryAxesY[axesPosition].Title.Font = new Font("Microsoft YaHei", 10, FontStyle.Bold); diagram.SecondaryAxesX[axesPosition2].Title.Visible = true; diagram.SecondaryAxesY[axesPosition].Title.Visible = true; diagram.SecondaryAxesX[axesPosition2].Title.Font = new Font("Microsoft YaHei", 10); diagram.SecondaryAxesY[axesPosition2].Title.Font = new Font("Microsoft YaHei", 10); view.Pane = pane; }