创建图表时,会根据图表类型自动生成其主轴。大多数图表有两个主轴:类别轴(X 轴)和值轴(Y 轴),前者通常在绘图区域的底部水平运行,后者通常在绘图区域的左侧垂直运行。三维图表还具有显示序列名称的深度(或系列)轴。但有些图表,如饼图或圆环图,根本没有轴。
如果所选的图表类型支持坐标区,则可以通过显示坐标区刻度线和网格线、更改坐标区位置、指定坐标区缩放比例、添加辅助坐标区等来修改坐标区。还可以设置轴线设置,并将格式选项应用于轴刻度线标签,如如何:设置图表元素格式示例中所述。
选择要执行的操作。
所有主轴都存储在主轴集合 (AxisCollection) 中,可使用 ChartObject.PrimaryAxes 属性进行访问。可以使用索引器表示法(0 表示类别轴,1 表示值轴,2 表示深度轴(如果存在))访问 Axis 对象定义的单个轴。若要显示或隐藏主轴,请使用 Axis.Visible 属性。若要在图表上定位轴,请使用 Axis.Position 属性。
下面的示例演示如何使用 Axis.Position 属性创建图表并指定其 y 轴位置。
Vb.Net |
'创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B3:C5")) chart.TopLeftCell = worksheet.Cells("H2") chart.BottomRightCell = worksheet.Cells("N14") '设置值轴的位置。 chart.PrimaryAxes(1).Position = DevExpress.Spreadsheet.Charts.AxisPosition.Right '隐藏图例。 chart.Legend.Visible = False |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B3:C5"]); chart.TopLeftCell = worksheet.Cells["H2"]; chart.BottomRightCell = worksheet.Cells["N14"]; // 设置值轴的位置。 chart.PrimaryAxes[1].Position = DevExpress.Spreadsheet.Charts.AxisPosition.Right; // 隐藏图例。 chart.Legend.Visible = false; |
对于图表中的主轴和次轴,可以添加和自定义其文本标题,这些标题可用于阐明沿轴显示的数据。
默认情况下不显示轴标题。但是,可以使用 Axis.Title 属性向任何水平轴、垂直轴或深度轴添加标题,该属性访问包含轴标题显示设置的 ChartTitleOptions 对象。此对象继承 ChartText 接口,该接口提供用于指定标题文本的方法。因此,若要添加轴标题,请将 ChartTitleOptions.Visible 属性设置为 true,然后执行下列操作之一。
下面的示例演示如何使用 Axis.Title 属性创建簇状条形图并将标题添加到值轴,该属性返回包含基本标题选项的 ChartTitleOptions 对象。将 ChartTitleOptions.Visible 属性设置为 true 以显示轴标题。若要显式指定标题的文本,请使用 ChartText.SetValue 方法。
Vb.Net |
'创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.BarClustered, worksheet("B4:C7")) chart.TopLeftCell = worksheet.Cells("E3") chart.BottomRightCell = worksheet.Cells("K14") '指定轴标题文本。 chart.PrimaryAxes(1).Title.Visible = True chart.PrimaryAxes(1).Title.SetValue("Shipment in millions of units") '隐藏图例。 chart.Legend.Visible = False '指定序列中的每个数据点具有不同的颜色。 chart.Views(0).VaryColors = True |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.BarClustered, worksheet["B4:C7"]); chart.TopLeftCell = worksheet.Cells["E3"]; chart.BottomRightCell = worksheet.Cells["K14"]; // 指定轴标题文本。 chart.PrimaryAxes[1].Title.Visible = true; chart.PrimaryAxes[1].Title.SetValue("Shipment in millions of units"); // 隐藏图例。 chart.Legend.Visible = false; // 指定序列中的每个数据点具有不同的颜色。 chart.Views[0].VaryColors = true; |
默认情况下,数值轴的最小和最大比例值会根据图表使用的数据自动计算。但是,可以使用 Axis.Scaling 属性来控制轴缩放,该属性获取 AxisScaling 对象。对象的属性允许您控制轴的最小值 (AxisScaling.Min) 和最大值 (AxisScaling.Max),将数值轴更改为对数(AxisScaling.LogScale 和 AxisScaling.LogBase)并指定轴方向 (AxisScaling.Orientation)。
下面的示例演示了如何创建簇状柱形图并指定值轴刻度。将 AxisScaling.AutoMax 和 AxisScaling.AutoMin 属性设置为 false,以指示将使用 AxisScaling.Max 和 AxisScaling.Min 属性手动设置轴的最大值和最小值
Vb.Net |
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("chartStock") workbook.Worksheets.ActiveWorksheet = worksheet '创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B3:C5")) chart.TopLeftCell = worksheet.Cells("H2") chart.BottomRightCell = worksheet.Cells("N14") '设置图表值轴的最小值和最大值 Dim axis As DevExpress.Spreadsheet.Charts.Axis = chart.PrimaryAxes(1) axis.Scaling.AutoMax = False axis.Scaling.Max = 1 axis.Scaling.AutoMin = False axis.Scaling.Min = 0 '隐藏图例。 chart.Legend.Visible = False |
C# |
// 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B3:C5"]); chart.TopLeftCell = worksheet.Cells["H2"]; chart.BottomRightCell = worksheet.Cells["N14"]; // 设置图表值轴的最小值和最大值 DevExpress.Spreadsheet.Charts.Axis axis = chart.PrimaryAxes[1]; axis.Scaling.AutoMax = false; axis.Scaling.Max = 1; axis.Scaling.AutoMin = false; axis.Scaling.Min = 0; // 隐藏图例。 chart.Legend.Visible = false; |
您可以通过应用数字格式来指定如何在轴上显示数值。轴标签中的数字可以显示为百分比、小数、货币、科学、分数、文本、会计、日期、时间或自定义值。若要将数字格式应用于刻度线标签,请使用 Axis.NumberFormat 属性。此属性提供对 NumberFormatOptions 对象的访问,该对象包含用于在图表元素中显示数字的格式选项。将相应的数字格式代码分配给 NumberFormatOptions.FormatCode 属性,并将 NumberFormatOptions.IsSourceLinked 属性设置为 false,以指示应用的格式与工作表单元格的数字格式不同。
下面的示例演示如何创建簇状柱形图,以及如何在值轴上将数字显示为百分比值。若要应用数字格式,请将 NumberFormatOptions.IsSourceLinked 属性设置为 false,并将所需的格式代码分配给 NumberFormatOptions.FormatCode 属性。
Vb.Net |
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("chartStock") workbook.Worksheets.ActiveWorksheet = worksheet '创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B3:C5")) chart.TopLeftCell = worksheet.Cells("H2") chart.BottomRightCell = worksheet.Cells("N14") ' 将数字格式应用于轴标签。 Dim axis As DevExpress.Spreadsheet.Charts.Axis = chart.PrimaryAxes(1) axis.NumberFormat.FormatCode = "0%" axis.NumberFormat.IsSourceLinked = False '隐藏图例。 chart.Legend.Visible = False |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B3:C5"]); chart.TopLeftCell = worksheet.Cells["H2"]; chart.BottomRightCell = worksheet.Cells["N14"]; // 将数字格式应用于轴标签。 DevExpress.Spreadsheet.Charts.Axis axis = chart.PrimaryAxes[1]; axis.NumberFormat.FormatCode = "0%"; axis.NumberFormat.IsSourceLinked = false; // 隐藏图例。 chart.Legend.Visible = false; |
当图表上的数据差异很大且比例差异很大时,或者当您在组合图上组合不同类型的数据时,可以沿辅助轴绘制一个或多个数据序列。
若要显示特定系列的辅助轴,请将 AxisGroup.Secondary 值分配给 Series.AxisGroup 属性。请注意,您不能使图表上的所有序列都是次要的。当您尝试更改图表上唯一的主轴或其图表类型不允许辅助轴的系列的轴组时,会发生异常。
如果次轴已成功创建,则会将它们添加到次轴集合中(可使用 ChartObject.SecondaryAxes 属性访问),并与主轴分开处理。可以获取由 Axis 对象定义的单个辅助轴,该对象按其在集合中的索引(0 表示辅助类别轴,1 表示辅助值轴)。对于次轴,您可以指定与主轴相同的轴选项集:例如,您可以设置次轴位置、调整缩放选项、添加轴标题等。
下面的示例演示了如何在图表上显示辅助轴。辅助轴组用于绘制特定系列的数据,其 Series.AxisGroup 属性设置为 AxisGroup.Secondary 值。
Vb.Net |
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("chartStock") workbook.Worksheets.ActiveWorksheet = worksheet '创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.LineMarker, worksheet("B2:D8")) chart.TopLeftCell = worksheet.Cells("F2") chart.BottomRightCell = worksheet.Cells("L15") '使用辅助轴。 chart.Series(1).AxisGroup = DevExpress.Spreadsheet.Charts.AxisGroup.Secondary '指定图例的位置。 chart.Legend.Position = DevExpress.Spreadsheet.Charts.LegendPosition.Top |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.LineMarker, worksheet["B2:D8"]); chart.TopLeftCell = worksheet.Cells["F2"]; chart.BottomRightCell = worksheet.Cells["L15"]; // 使用辅助轴。 chart.Series[1].AxisGroup = DevExpress.Spreadsheet.Charts.AxisGroup.Secondary; // 指定图例的位置。 chart.Legend.Position = DevExpress.Spreadsheet.Charts.LegendPosition.Top; |
创建图表时,默认情况下,它会向每个轴添加主要刻度线。刻度线是用于指示轴分界线的细线。可以使用 Axis.MajorTickMarks 属性隐藏主要刻度线或调整其位置。若要显示和定位次要刻度线,请使用 Axis.MinorTickMarks 属性。还可以通过 Axis.MajorUnit 和 Axis.MinorUnit 属性更改主刻度线和次要刻度线之间的距离,从而指定轴上应显示的刻度线数。
轴上的每个主要刻度线都附有一个刻度线标签 - 解释轴单位含义的文本标识符。刻度线标签是根据沿轴显示的数据自动生成的。但是,可以通过将 Axis.TickLabelPosition 属性设置为 AxisTickLabelPosition.None 来从图表中删除轴标签。您还可以将数字格式应用于标签中显示的数值。
下面的示例演示如何通过将 Axis.MajorTickMarks 属性设置为 AxisTickMarks.None 值来创建簇状柱形图并隐藏轴主要刻度线。
Vb.Net |
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("chartStock") workbook.Worksheets.ActiveWorksheet = worksheet '创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet("B3:C5")) chart.TopLeftCell = worksheet.Cells("H2") chart.BottomRightCell = worksheet.Cells("N14") '设置轴刻度标记。 Dim axis As DevExpress.Spreadsheet.Charts.Axis = chart.PrimaryAxes(0) axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None axis = chart.PrimaryAxes(1) axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None '隐藏图例。 chart.Legend.Visible = False |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.ColumnClustered, worksheet["B3:C5"]); chart.TopLeftCell = worksheet.Cells["H2"]; chart.BottomRightCell = worksheet.Cells["N14"]; // 设置轴刻度标记。 DevExpress.Spreadsheet.Charts.Axis axis = chart.PrimaryAxes[0]; axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None; axis = chart.PrimaryAxes[1]; axis.MajorTickMarks = DevExpress.Spreadsheet.Charts.AxisTickMarks.None; // 隐藏图例。 chart.Legend.Visible = false; |
为了提高图表的可读性,您可以显示网格线 - 横跨绘图区域的一系列水平线和垂直线。默认情况下,图表显示主值轴的主要网格线,以帮助您确定每个数据点的值。但是,可以使用 Axis.MajorGridlines 属性隐藏值轴的主要网格线或向类别轴添加网格线。还可以通过使用 Axis.MinorGridlines 属性来显示次要网格线。
下面的示例演示如何创建一个简单的折线图,并通过将 ChartLineOptions.Visible 属性设置为 true 来显示类别轴的主网格线和值轴的次要网格线。
Vb.Net |
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("chartStock") workbook.Worksheets.ActiveWorksheet = worksheet '创建图表并指定其位置。 Dim chart As DevExpress.Spreadsheet.Charts.Chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.Line, worksheet("B2:C8")) chart.TopLeftCell = worksheet.Cells("F2") chart.BottomRightCell = worksheet.Cells("L15") '显示类别轴的主要网格线 chart.PrimaryAxes(0).MajorGridlines.Visible = True '显示值轴的次要网格线。 chart.PrimaryAxes(1).MinorGridlines.Visible = True '隐藏图例。 chart.Legend.Visible = False |
C# |
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["chartStock"]; workbook.Worksheets.ActiveWorksheet = worksheet; // 创建图表并指定其位置。 DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(DevExpress.Spreadsheet.Charts.ChartType.Line, worksheet["B2:C8"]); chart.TopLeftCell = worksheet.Cells["F2"]; chart.BottomRightCell = worksheet.Cells["L15"]; // 显示类别轴的主要网格线 chart.PrimaryAxes[0].MajorGridlines.Visible = true; // 显示值轴的次要网格线。 chart.PrimaryAxes[1].MinorGridlines.Visible = true; // 隐藏图例。 chart.Legend.Visible = false; |