Foxtable(狐表)用户栏目专家坐堂 → 生成以用户列的每一个用户生成一个折线图?


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

主题:生成以用户列的每一个用户生成一个折线图?

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


加好友 发短信
等级:幼狐 帖子:99 积分:1155 威望:0 精华:0 注册:2012/9/30 10:20:00
生成以用户列的每一个用户生成一个折线图?  发帖心情 Post By:2023/6/26 11:22:00 [只看该作者]

如图,如何生成以用户列的每一个用户生成一个折线图
遇到的问题是:代码是将全部用户生成在一张图上了

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


'制作报表
Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("表A")
For ii As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(ii)
    Dim ra As New prt.RenderArea '定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止容器因为分页而被垂直分割
    ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
    
    '---------------------插入图表
    
    Dim Chart As WinForm.Chart '定义一个图表变量
    Dim Series As WinForm.ChartSeries '定义一个图系变量
    Dim t As Table = Tables("表A") '定义一个变量t引用数据表
    Chart = Forms("窗口1").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)("项目1") '指定垂直坐标
        Chart.AxisX.SetValueLabel(i, t.Rows(i)("用户")) '指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True '启用字符标示
    
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    doc.Body.Children.Add(rm) '将图片对象加入报表
    
Next
Doc.Preview() '预览报表
[此贴子已经被作者于2023/6/26 11:22:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/26 11:34:00 [只看该作者]

一个用户一个图片?还是一张图里一个用户一条折线?
[此贴子已经被作者于2023/6/26 11:34:25编辑过]

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


加好友 发短信
等级:幼狐 帖子:99 积分:1155 威望:0 精华:0 注册:2012/9/30 10:20:00
  发帖心情 Post By:2023/6/26 11:47:00 [只看该作者]

老师,是一个用户一个图片
按照上面的表格,那就是应该有三张图片,
PD01一张;PD02一张;PD03一张;

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

Dim doc As New PrintDoc '定义一个报表
Dim tbl As Table = Tables("表A")
For Each s As String In tbl.DataTable.GetValues("用户")
    '---------------------插入图表
    Dim drs As List(Of DataRow) = tbl.DataTable.Select("用户='" & s & "'", "日期")
    Dim Chart As New ChartBuilder
    Chart.SeriesList.Clear() '清除图表原来的图系
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = drs.Count '设置图系的长度
    For i As Integer = 0 To drs.Count - 1 '指定每个数据点的位置
        Series.X(i) = i '指定水平坐标
        Series.Y(i) = drs(i)("项目1") '指定垂直坐标
        Chart.AxisX.SetValueLabel(i, format(drs("日期"), "MM-dd")) '指定字符表示
    Next
    Chart.AxisX.AnnoWithLabels = True '启用字符标示
    
    Dim rm As New prt.RenderImage
    rm.Image = Chart.Image()
    doc.Body.Children.Add(rm) '将图片对象加入报表
    
Next
Doc.Preview() '预览报表

 回到顶部