Foxtable(狐表)用户栏目专家坐堂 → [求助]关于图表生成的数据源


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

主题:[求助]关于图表生成的数据源

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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 14:58:00 [只看该作者]

搞定 ,这招够绝

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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 16:29:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:2017-06-14_162623.gif
图片点击可在新窗口打开查看

 

想实现这中折线图,但是数据来源于两张sql表,代码无效?

 

以下内容为程序代码:

1 Dim Chart As WinForm.Chart '定义一个图表变量
2 Dim Series As WinForm.ChartSeries '定义一个图系变量
3 Dim t As Table = e.Form.Controls("Tablelablist1").Table '定义一个变量t引用数据表
4 Dim k As Table = e.Form.controls("Tablelablist2").Table
5 Chart= e.Form.Controls("Chartlab") ' 引用窗口中的图表
6 Chart.SeriesList.Clear() '清除图表原来的图系
7 t.sort = "labtime"
8 Chart.AxisX.ClearValueLabel
9 Series = Chart.SeriesList.Add() '增加一个图系
10 Series.Length = t.Rows.Count '设置图系的长度
11 Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
12 For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置
13 Series.X(i) = i 'cDate(t.Rows(i)("time"))'指定水平坐标
14 Series.Y(i) = val(t.Rows(i)("value")) '指定垂直坐标
15 Series.DataLabelText = "{#YVAL}"
16 Chart.AxisX.SetValueLabel(i, format(cDate(t.Rows(i)("time")), "yyyy-MM-dd ")) '指定字符表示
17 Next
18 For l As Integer = 0 To k.Rows.Count - 1 '指定每个数据点的位置
19 Series.X(l) = l 'cDate(t.Rows(i)("time"))'指定水平坐标
20 Series.Y(l) = val(k.Rows(l)("value")) '指定垂直坐标
21 Series.DataLabelText = "{#YVAL}"
22 Chart.AxisX.SetValueLabel(l, format(cDate(t.Rows(l)("time")), "yyyy-MM-dd ")) '指定字符表示
23 Next
24
25 Chart.AxisX.AnnoRotation = -45
26 Chart.AxisX.AnnoWithLabels = True '启用字符标示


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 16:34:00 [只看该作者]

 做个例子发上来,需要合并两表数据后生成。

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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 16:57:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目888 (1).table

表A/B 显示到 图表1

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 17:21:00 [只看该作者]

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目888 (1) (1).table


 


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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 17:47:00 [只看该作者]

老大,太强了!
不过还有最后一个问题,这两条曲线的 纵坐标标尺不同,如何才能各自标尺能,不然一条就会被显示为平线?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 17:57:00 [只看该作者]

 没看懂,这个意思?

 

Dim dic1 As new SortedDictionary(Of Date, Double)
Dim dic2 As new SortedDictionary(Of Date, Double)
For Each r As Row In e.Form.controls("Table数据").Table.Rows
    If r.IsNull("date") = False Then
        If dic1.ContainsKey(r("date")) = False Then
            dic1.add(r("date"), r("value"))
        End If
        dic2.add(r("date"), 0)
    End If
Next
For Each r As Row In e.Form.controls("Table1").Table.Rows
    If r.IsNull("date") = False Then
        If dic1.ContainsKey(r("date")) = False Then
            dic1.add(r("date"), 0)
        End If
        If dic2.ContainsKey(r("date")) = False Then
            dic2.add(r("date"), r("value"))
        Else
            dic2(r("date")) = r("value")
        End If
    End If
Next

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
Dim dics() = {dic1, dic2}
Dim arys() As Integer = {0, 50}
For j As Integer = 0 To dics.length-1
    Dim dic = dics(j)
    Dim n As Integer = arys(j)
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Length = dic.Count '设置图系的长度
    Dim i As Integer = 0
    For Each key As Date In dic.keys
        Series.X(i) = i '指定水平坐标
        Series.Y(i) = dic(key) + n '指定垂直坐标
        Chart.AxisX.SetValueLabel(i, format(key, "yyyy-MM-dd")) '指定字符表示
        i += 1
    Next
Next
Chart.AxisX.AnnoRotation = -45
Chart.AxisX.AnnoWithLabels = True '启用字符标示


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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 18:08:00 [只看该作者]

 

不对 ,相当于 两条曲线显示同一个图表,各自的纵坐标不同,如果使用同一个纵坐标,有一条线会被拉平,显示不出起伏。

[此贴子已经被作者于2017/6/22 12:42:49编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 18:14:00 [只看该作者]

 没理解你的意思,根据你的数据画的线,你数据没有起伏,自然就是一条直线。

 

 请举例说明。


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


加好友 发短信
等级:幼狐 帖子:125 积分:797 威望:0 精华:0 注册:2017/5/26 11:11:00
  发帖心情 Post By:2017/6/14 18:19:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:2017-06-14_181615.gif
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2017-06-14_181631.gif
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2017-06-14_181743.gif
图片点击可在新窗口打开查看
1/2 为各自纵坐标,这时候起伏明显,合并以后 3,坐标以2为准,自然a的起伏就显示不出来了

 回到顶部
总数 55 上一页 1 2 3 4 5 6 下一页