Foxtable(狐表)用户栏目专家坐堂 → 【图表】怎么生成如图格式的多柱形图呢?


  共有1832人关注过本帖树形打印复制链接

主题:【图表】怎么生成如图格式的多柱形图呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【图表】怎么生成如图格式的多柱形图呢?  发帖心情 Post By:2017/12/4 21:25:00 [只看该作者]

【图表】怎么生成如图格式的多柱形图呢?

假定表A有 门店名称   投入   产出   利润   年份  月份  六个字段

1店   1000   1200   200   2012  07
1店   1000   1200   200   2012  08
2店   2000   4000   2000 2012  07
2店   2000   4000   2000 2012  08
3店   3000   7000   4000 2012  07
3店   3000   7000   4000 2012  08

怎么生成如下图呢?

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20171204211657.png
图片点击可在新窗口打开查看

下面的代码只能实现单柱形图
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("门店产值") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
t.filter = "门店名称 = '永吉地板'"

For r As Integer = 0 To t.Rows.Count - 1
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = t.rows(r)("门店名称") '设置图系的标题
    Series.Length = t.cols.Count - 2 '设置图系的长度
    For i As Integer = 2 To t.cols.count-1
        Series.X(i-2) = i-2
        Series.Y(i-2) = t.Rows(r)(t.cols(i).name)
        Chart.AxisX.SetValueLabel(i-2, t.cols(i).name) '指定字符表示
    Next
Next
Series.DataLabelText = "{#YVAL}"
Series.TooltipText = "永吉地板{#XVAL}月, {#YVAL}元"
'Chart.AxisX.AnnoWithLabels = True '启用字符标示
''Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
'Chart.LegendVisible = True '显示图列
'Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/12/4 21:53:00 [只看该作者]

Dim g As new GroupTableBuilder("统计表1",DataTables("门店产值"))
g.Groups.AddDef("月份")
g.Totals.AddDef("投入")
g.Totals.AddDef("产出")
g.Totals.AddDef("利润")
g.filter = "门店名称 = '永吉地板'"
Dim dt As DataTable = g.Build(True)

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Dim cls() As String = {"投入","产出","利润"}
For Each c As String  In cls
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = c '设置图系的标题
    Series.Length = 13 '设置图系的长度
    For r As Integer = 0 To 12
        Series.X(r) = r
        Series.Y(r) = 0
    Next
    For i As Integer = 0 To dt.dataRows.Count - 1
        Series.Y(dt.dataRows(i)("月份")) = dt.dataRows(i)(c)
    Next
Next
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim g As new GroupTableBuilder("统...  发帖心情 Post By:2017/12/4 22:15:00 [只看该作者]

有点蓝老师  怎么加入下面的两行
不对应显示数据呢?
Series.DataLabelText = "{#YVAL}"
Series.TooltipText = "永吉地板{#XVAL}月, {#YVAL}元"


第一行只显示了利润的数据  投入  产出 不显示
第二行代码也是只显示了利润的数据  投入  产出  不显示
还得麻烦指导一下  谢谢!
[此贴子已经被作者于2017/12/4 22:17:31编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/12/4 22:27:00 [只看该作者]

……
For Each c As String  In cls
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = c '设置图系的标题
    Series.Length = 13 '设置图系的长度
    For r As Integer = 0 To 12
        Series.X(r) = r
        Series.Y(r) = 0
    Next
    For i As Integer = 0 To dt.dataRows.Count - 1
        Series.Y(dt.dataRows(i)("月份")) = dt.dataRows(i)(c)
    Next
    Series.TooltipText = "永吉地板 " & c & " {#XVAL}月, {#YVAL}元"
Next
……

 回到顶部