非数值字段
我们已经知道,指定一个数据点需要用两个数值,但是有的时候数据列并不是数值型的,例如下面的表:
上表中产品列是字符型,并不是数值型,应该如何来图示这个数据表呢?
方法一
如果采用绑定的方法,那么很简单,和原来一样设置代码即可。
新建一个窗口,在窗口中分别插入一个图表和一个按钮,将按钮的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