每个图表区包含其绘图区的轴(Axis 对象),您可以通过相应的图表区访问每个轴。
使用 X 和 Y 轴绘制图表。Y 轴一般具有数字刻度,而 X 轴一般具有类别刻度。类别可以包括字符串、数字和日期值。默认情况下,图表 c 控件为所有轴使用数字刻度。
每个轴可以具有自己的标题。若要设置轴标题,请使用 Axis.Title 属性。
根据轴绘图
最常用的图表有一组“主轴”,还可能有一组“辅助轴”。可以在 ChartArea 对象中启用和禁用每个轴,并使用 Series.XAxisType 和 Series.YAxisType 属性设置要根据主轴或辅助轴绘图的 Series 对象。请参见下表了解哪个属性控制哪个轴。
对于大多数图表类型,X 轴为水平轴,Y 轴为垂直轴,但是以下情况例外:
在条形图图表类型中,X 轴为垂直轴,Y 轴为水平轴。
圆形图表类型只使用主轴,X 轴表示圆的半径,Y 轴表示周长。
漏斗图和棱锥图图表类型只使用主轴,X 轴表示垂直堆积(堆积上的每个项由一个数据点表示)。Y 轴可以表示每个项的面积或高度,具体取决于您的设置。
下表显示每个轴在图表区中的典型位置。
轴 |
位置 |
---|---|
主 X |
底部 |
主 Y |
左侧 |
辅助 X |
顶部 |
辅助 Y |
右侧 |
自定义刻度、网格线和刻度线
默认情况下,该 Chart 控件自动基于数据序列在图表区中设置轴的刻度。可以手动设置每个轴的 Minimum、Maximum、Interval、IntervalOffset、IntervalType 和 IntervalOffsetType 属性。可以通过为轴的 MajorGrid、MinorGrid、MajorTickMark、MinorTickMark 和 LabelStyle 属性定义不同的设置,来进一步对它们进行自定义。如果在轴和其中的一个组件中设置相同的属性(例如,在 AxisY 和 AxisY.MajorGrid 中设置了 Minimum 属性),则组件设置优先。
将 Axis.Interval 设置为 Auto 时,Axis.IntervalAutoMode 属性确定应计算多少间隔。如果您的图表经常在运行时调整大小或重新绘制,可以将 Axis.IntervalAutoMode 属性设置为 VariableCount。这样图表将动态计算轴间隔。如果根据数据以不同方式显示图表间隔,这很有用。
还可以通过将 Axis.IsLogarithmic 属性设置为 true 来使用对数刻度。
使用交叉点
图表区绘制“交叉点”的数据,它表示 X 轴和 Y 轴相交的值。例如,如果 0 是主 Y 轴的交叉点,则柱形图图表中值为 5 的数据点显示为在 Y=0 的直线上方延伸的柱形,值为 -5 的数据点显示为在 Y=0 的直线下方延伸的柱形。
默认情况下,图表区自动确定交叉点。使用 Axis.Crossing 属性对交叉点值进行自定义。
提示
在 Axis.Crossing 中指定的值必须位于在 Axis.Minimum 和 Axis.Maximum 属性中指定的上限值和下限值之间。
将交叉点更改为非默认值可能导致将轴标签和刻度线连同交叉点一起移入绘图区。若要使轴标签和刻度线位于绘图区之外,请将 Axis.IsMarksNextToAxis 属性设置为 False。
使用刻度分隔线
“刻度分隔线”是 Y 轴上有意设置的分隔线,常用于将数据点在图表上重新分布。当要绘图的数据的较大值和较小值相差很大时,这可以改善可读性。在 Axis.ScaleBreakStyle 属性中设置刻度分隔线。
使用条带线
绘图区中的“条带线”勾画单个数据点或强调绘图区中的相关区域。若要使用条带线,请使用 Axis.IsInterlaced 属性或 Axis.StripLines 属性。
如果将 Axis.IsInterlaced 属性设置为 True,图表将针对相应的轴每隔一个网格线间隔绘制条带线。如果相应的轴没有使用网格线,则使用轴的刻度线或标签来确定交错的条带线间隔。可以使用 Axis.InterlacedColor 属性设置条带线的颜色。
Axis.StripLines 集合属性(StripLinesCollection 对象)存储 StripLine 对象。该图表控件根据 Axis.StripLines 中的 StripLine 对象的 Z 顺序绘制条带线。在给定的宽度、间隔和偏移量处重复绘制每个 StripLine 对象。若要绘制非重复的条带线,请将 StripLine.Interval 设置为较大的数,以便只有一个重复的实例适合该图表。
下面的代码演示如何使用 Axis.StripLines 属性在值为 20 到 60 之间的主 Y 轴上绘制条带线。
chart1.ChartAreas(0).AxisY.StripLines.Add(New StripLine())
chart1.ChartAreas(0).AxisY.StripLines(0).BackColor = Color.FromArgb(80, 252, 180, 65)
chart1.ChartAreas(0).AxisY.StripLines(0).StripWidth = 40
chart1.ChartAreas(0).AxisY.StripLines(0).Interval = 1000
chart1.ChartAreas(0).AxisY.StripLines(0).IntervalOffset = 20
chart1.ChartAreas[0].AxisY.StripLines.Add(new StripLine());
chart1.ChartAreas[0].AxisY.StripLines[0].BackColor = Color.FromArgb(80, 252, 180, 65);
chart1.ChartAreas[0].AxisY.StripLines[0].StripWidth = 40;
chart1.ChartAreas[0].AxisY.StripLines[0].Interval = 10000;
chart1.ChartAreas[0].AxisY.StripLines[0].IntervalOffset = 20;