以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 从统计表提取数据转图标展示的相关问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175199) |
-- 作者:jwt -- 发布时间:2022/2/23 17:56:00 -- 从统计表提取数据转图标展示的相关问题 我已经建立了一个统计报表,数据都是根据人员明细表自动统计生成的(图1),但我现在想做个图表展示,而我看教程里,图标引用数据都是竖向,我想展示的模式是:用饼状图显示集团公司总的年龄分布、学历分布等内容,也能单独展示每个分公司的年龄分布、学历分布(图2),因此在引用数据时就得是横向几列 的数据。请问该怎么弄?有没有相关教程? [此贴子已经被作者于2022/2/23 17:56:43编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/2/24 8:36:00 -- 参考:http://www.foxtable.com/webhelp/topics/0970.htm |
-- 作者:jwt -- 发布时间:2022/2/24 9:11:00 -- 是我没表达清楚我,举个例子:我要展示总部人员的年龄分布饼状图,那我就需要引用统计表里年龄5列中的4列(2030,3140,4150,5160),但是,教程里的是单列的代码(修改代码如下),达不到我要引用4列数据的目的。也没发引用我统计表里“合计行”的数据,请教。 Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim t As Table = Tables("总量统计表") \'定义一个变量t引用数据表 Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表 Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮 Chart.ChartType = ChartTypeEnum.pie \'图表类型该为pie(饼图) Chart.SeriesList.Clear() \'清除图表原来的图系 Series = Chart.SeriesList.Add() \'增加一个图系 Series.Text = "年龄分布" Series.Length = t.Rows.Count \'设置图系的长度 For i As Integer = 0 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标 Series.Y(i) = t.Rows(i)("年龄_2030") \'指定垂直坐标 Chart.AxisX.SetValueLabel(i, t.Rows(i)("单位")) \'指定字符表示 Next Series.DataLabelText = "{#YVAL}" Chart.AxisX.AnnoWithLabels = True \'启用字符标示 Chart.LegendVisible = True \'显示图列 Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
|
-- 作者:有点蓝 -- 发布时间:2022/2/24 9:39:00 -- 遍历行,改为遍历指定的4列。一个单位一个饼图 |
-- 作者:jwt -- 发布时间:2022/2/24 10:01:00 -- 谢谢大佬,另外,对于这个总计列,是根据代码统计出来的,在表中是没有序号的,请问该怎么引用? 此主题相关图片如下:1.jpg |
-- 作者:有点蓝 -- 发布时间:2022/2/24 10:20:00 -- 您想怎么样用?如果要区分其它数据,判断序号列值是不是“总计”即可 |
-- 作者:jwt -- 发布时间:2022/2/24 10:26:00 -- 是我要引用“总计”那一行的数据,但这个数据不在表格里,他的生成代码如下,这个表格的0行数据(For i As Integer = 0 \'指定每个数据点的位置 Series.X(i) = i \'指定水平坐标)其实是序号为01的那一行的,我要引用这个“总计”这一行的数据......... Dim n As Integer = Tables("总量统计表").Rows.Count-1 Dim k As Integer = Tables("总量统计表").Cols.Count-1 CurrentTable.Select(0,0,n,k) Syscmd.Edit.ClearZero() \'清除0项 Dim t As Table = Tables("总量统计表") Dim g As Subtotalgroup t.SubtotalGroups.Clear() t.GroupAboveData = True t.TreeVisible = False t.SpillNode = False g = New Subtotalgroup g.Aggregate = AggregateEnum.Sum g.GroupOn = "*" g.TotalOn = "总人数,性别_男,性别_女,年龄_平均,年龄_2030,年龄_3140,年龄_4150,年龄_5160,第一学历_硕士,第一学历_本科,第一学历_专科,第一学历_中专,第一学历_技校,第一学历_高中,第一学历_初中,最高学历_硕士,最高学历_本科,最高学历_专科,最高学历_中专,最高学历_技校,最高学历_高中,最高学历_初中,建造师_一级,建造师_二级,非在岗人数,另有非统招人员" g.Caption = "总计" t.SubtotalGroups.Add(g) t.Subtotal() |
-- 作者:有点蓝 -- 发布时间:2022/2/24 10:50:00 -- 方法1:http://www.foxtable.com/webhelp/topics/1594.htm 2、自己使用compute统计获取需要的列的统计值即可:http://www.foxtable.com/webhelp/topics/0393.htm
|
-- 作者:jwt -- 发布时间:2022/2/24 15:32:00 -- 遍历列,遍历列,遍历不明白了...............代码一直是错的,改了好几次,饼图一直出不来 Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 Dim t As Table = Tables("总量统计表") \'定义一个变量t引用数据表 Dim sm As Integer = t.Compute("Sum(年龄_2030,年龄_5160)") \'计算总数量 Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表 Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮 Chart.ChartType = ChartTypeEnum.Pie \'图表1类型改为Bar(条形) For r As Col = 6 To 9 Series = Chart.SeriesList.Add() \'增加一个图系 Series.Length = 1 \'一个系列只能包括一个值 Series.Text = r & "(" & r("r") & ")" \'设置图系的标题 Series.Y(0) = r("r") \'指定值 Series.DataLabelText = Math.Round(r)*100/sm,2) & "%" \'计算百分比 Next Chart.LegendVisible = True \'显示图列 Chart.LegendCompass= CompassEnum.East \'图列显示在东方(右方) [此贴子已经被作者于2022/2/24 15:34:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/2/24 15:35:00 -- 建议使用compute统计 |