Foxtable(狐表)用户栏目专家坐堂 → 复杂图表如何呈现,请专家指点


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

主题:复杂图表如何呈现,请专家指点

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2020/4/7 12:51:00 [显示全部帖子]

你的问题很有意思,也很现实。
你想要的来了(但你自己的图和数据对不上):
列的顺序应改为:产品号、计划上旬、完成上旬、计划中旬、完成中旬、计划下旬、完成下旬。这样修改之后,即使没有图,也方便对比。
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("表A") '定义一个变量t引用数据表
Dim r,ymax,y As Integer
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "产品号" Then
        y = 0
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.Length = t.Rows.Count '设置图系的长度
        For r = 0 To t.Rows.Count - 1
            y = y + t.Rows(r)(c.Name)
            If c.name.StartsWith("计划") Then
                Series.X(r) = 2*r
            Else
                Series.X(r) = 2*r + 0.5
            End If
            Series.Y(r) = t.Rows(r)(c.Name)
            Chart.AxisX.SetValueLabel(2*r + 0.25, t.Rows(r)("产品号")) '指定字符表示
        Next
        If y > ymax Then
            ymax = y
        End If
    End If
Next
chart.AxisY.Max = ymax
Chart.AxisX.AnnoWithLabels = True '启用字符标示
'Chart.VisualEffect = True '加上这一行,让你的图表更漂亮 --实际更不好看
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.Stacked = True
[此贴子已经被作者于2020/4/7 13:00:40编辑过]

 回到顶部