Pie

Pie(饼型)也是一种常用类型,Pie型非常特殊,没有X轴,只使用Y轴设置数据;一个图系表示一个扇形,而且只能包括一个值,这个值的大小决定扇形的大小。

例如对于上面的表,如果需要用Pie型来图示,代码会和我们之前的代码有很大的不同:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Dim
t As Table = Tables("统计表1") '定义一个变量t引用数据表
Chart= Forms(
"窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect =
True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie
'图表1类型改为Bar(条形)
For
Each r As Row In t.Rows
    Series = Chart.SeriesList.Add()
'增加一个图系
    Series.Length =
1 '一个系列只能包括一个值
    Series.Text = r(
"产品") & "(" & r("数量") & ")" '设置图系的标题
    Series.Y(
0) = r("数量") '指定值
Next

Chart.LegendVisible =
True '显示图列
Chart.LegendCompass= CompassEnum.East
'图列显示在东方(右方)

这是生成的图表:

Chart有个PieInnerRadius属性(如果是第二图表,请使用PieInnerRadius2),用于设置饼图的中空比例,通过这个属性我们可以得到环形图,例如:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Dim
t As Table = Tables("统计1") '定义一个变量t引用数据表
Chart = Forms(
"窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect =
True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie
'图表1类型改为Bar(条形)
For
Each r As Row In t.Rows
    Series = Chart.SeriesList.Add()
'增加一个图系
    Series.Length = 1
'一个系列只能包括一个值
    Series.Text = r(
"产品") & "(" & r("数量") & ")" '设置图系的标题
    Series.Y(0) = r(
"数量") '指定值
Next

Chart.PieInnerRadius = 70
'中空比例为70%

这是生成的图表:

 

ChartSeries 有一个属性Offset,它可以让图系所代表的扇形偏离中心点,所偏离的距离就由该属性指定。
例如,我们稍微改一下代码:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim
Series As WinForm.ChartSeries '定义一个图系变量
Dim
t As Table = Tables("统计表1") '定义一个变量t引用数据表
Chart= Forms(
"窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect =
True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie
'图表1类型改为Bar(条形)
For
Each r As Row In t.Rows
    Series = Chart.SeriesList.Add()
'增加一个图系
    Series.Length =
1 '一个系列只能包括一个值
    Series.Text = r(
"产品") & "(" & r("数量") & ")" '设置图系的标题
    Series.Y(
0) = r("数量") '指定值
   
If r("产品") = "PD05" Then '如果是产品PD05
        Series.Offset =
20 '那么图系偏离中心点20个像素。
   
End
If
Next

Chart.LegendVisible =
True '显示图列
Chart.LegendCompass= CompassEnum.East
'图列显示在东方(右方)

得到的图表为:

有的时候,可能希望能够以百分比的形式标出各数据,可以参考下面的代码:

Dim t As Table = Tables("统计表1") '定义一个变量t引用数据表
Dim sm As Integer = t.Compute("Sum(数量)") '计算总数量
Dim
Chart As WinForm.Chart = e.Form.Controls("Chart1") '定义一个图表变量
Chart.VisualEffect =
True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Pie
'图表1类型改为Bar(条形)
Chart.SeriesList.Clear()

For
Each r As Row In t.Rows
   
Dim Series As WinForm.ChartSeries = Chart.SeriesList.Add() '增加一个图系
    Series.Length = 1
'一个系列只能包括一个值
    Series.Text = r(
"产品") & "(" & r("数量") & ")" '设置图系的标题
    Series.Y(0) = r(
"数量") '指定值
    Series.DataLabelText = r(
"产品") & "(" & Math.Round(r("数量") * 100 / sm, 2) & "%)" '计算百分比
    Series.DataLabelCompass = LabelCompassEnum.RadialText
'标示文本径向排列|
    Series.DataLabelOffset = -8
'向内偏移8个像素
Next

Chart.LegendVisible =
True '显示图列
Chart.LegendCompass = CompassEnum.East
'图列显示在东方(右方)

得到的图表为:


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