非数值字段

我们已经知道,指定一个数据点需要用两个数值,但是有的时候数据列并不是数值型的,例如下面的表:

上表中产品列是字符型,并不是数值型,应该如何来图示这个数据表呢?

方法一

如果采用绑定的方法,那么很简单,和原来一样设置代码即可。
新建一个窗口,在窗口中分别插入一个图表和一个按钮,将按钮的Click事件代码设置为:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.DataSource =
"统计表1" '设置绑定表
Chart.SeriesList.Clear()
'清除图表原来的图系
Series = Chart.SeriesList.Add()
'增加一个图系
Series.X.DataField =
"产品" 'X轴绑定到产品列
Series.Y.DataField =
"数量" 'Y轴绑定到数量列

下图是生成的图表,你会发现,连X轴的刻度标记也自动转换为产品名称了:

方法二

下面采用编码的方式来处理非数值字段,其实原理很简单,为每一个数值指定一个字符型表示即可:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Dim
t As Table = Tables("统计表1") '定义一个变量t引用数据表
Chart= e.Form.Controls(
"Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear()
'清除图表原来的图系
Series = Chart.SeriesList.Add()
'增加一个图系
Series.Length = t.Rows.Count
'设置图系的长度
For
i As integer = 0 to t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(i) = i
'指定水平坐标
    Series.Y(i) = t.Rows(i)(
"数量") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, t.Rows(i)(
"产品")) '指定字符表示
Next

Chart.AxisX.AnnoWithLabels =
True '启用字符标示

代码比方法一复杂一点,而且首次接触到一个新的对象AxisX。
AxisX表示X坐标轴(就是水平方向的坐标轴),坐标轴类型有一个
SetValueLabel方法,用于指定某一数值的字符型表示,例如:

Chart.AxisX.SetValueLabel(1, "一月份")

这样坐标轴标记刻度的时候,会用字符“一月份”代替数值1。
除了设置数值的字符表示,还需要将坐标轴的
AnnoWithLabels属性设置为True,这样
坐标轴才会用数字的字符表示来标记刻度。


本页地址:http://www.foxtable.com/webhelp/topics/0968.htm