Foxtable(狐表)用户栏目专家坐堂 → 能以日期为数据生成图表吗


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

主题:能以日期为数据生成图表吗

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


加好友 发短信
等级:婴狐 帖子:12 积分:131 威望:0 精华:0 注册:2017/2/28 17:11:00
  发帖心情 Post By:2017/3/1 15:02:00 [只看该作者]

软件开发商是不是可以解决这个问题哦?

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


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

 7楼的,可以实现。

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


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

 

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


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


加好友 发短信
等级:婴狐 帖子:12 积分:131 威望:0 精华:0 注册:2017/2/28 17:11:00
  发帖心情 Post By:2017/3/2 15:17:00 [只看该作者]

谢谢,能不能把对应的时间点也显示出来。

发觉Y轴的月度不是以(约)30日进制的,图表上感觉显示不准确
[此贴子已经被作者于2017/3/2 15:58:04编辑过]

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


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

参考代码

 

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() '清除图表原来的图系
Dim cs() As String = {"完工","架梁","铺轨"}
Dim drs As List(Of DataRow ) = t.DataTable.Select("工程名称 is not null")
Chart.AxisX.ClearValueLabel
Chart.AxisY.ClearValueLabel
Dim mind As Date
Dim maxd As Date
For Each c As String In cs
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = c'设置图系的标题
    series.length = drs.count
    Series.DataLabelText = "{#YVAL}"
    For r As Integer = 0 To drs.Count - 1
        Series.X(r) = r
        Dim v As Double = val(format(drs(r)(c),"yyyyMMdd"))
        Series.Y(r) = v
        Chart.AxisX.SetValueLabel(r, drs(r)("工程名称")) '指定字符表示
        If mind = Nothing OrElse mind > drs(r)(c) Then
            mind = drs(r)(c)
        End If
        If maxd = Nothing OrElse maxd < drs(r)(c) Then
            maxd = drs(r)(c)
        End If
       
    Next
Next
mind = new Date(mind.Year, mind.Month, 1)
maxd = new Date(maxd.Year, maxd.Month, 1)
Do While maxd >= mind
    Dim v As Double = val(format(mind,"yyyyMMdd"))
    Chart.AxisY.SetValueLabel(v,format(mind, "yyyy.MM")) '指定字符表示
    mind = mind.AddMonths(1)
Loop

Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.AxisY.AnnoWithLabels = True '启用字符标示
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)


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


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

mark 图表事件

 

如果你需要自定义格式,就需要这样绑定事件

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


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


加好友 发短信
等级:婴狐 帖子:12 积分:131 威望:0 精华:0 注册:2017/2/28 17:11:00
  发帖心情 Post By:2017/3/2 16:04:00 [只看该作者]

感觉Y轴月度的进制好像不对,图表显示好像不准确

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


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

 上传实例说明。

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


加好友 发短信
等级:婴狐 帖子:12 积分:131 威望:0 精华:0 注册:2017/2/28 17:11:00
  发帖心情 Post By:2017/3/2 16:53:00 [只看该作者]


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


这个图是用您写的程序生成的
[此贴子已经被作者于2017/3/2 18:15:24编辑过]

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


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

mark 图表标签

 

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() '清除图表原来的图系
Dim cs() As String = {"完工","架梁","铺轨"}
Dim drs As List(Of DataRow ) = t.DataTable.Select("工程名称 is not null")
Chart.AxisX.ClearValueLabel
Chart.AxisY.ClearValueLabel
Dim mind As Date
Dim maxd As Date
Dim c1Chart1 = Chart.basecontrol
Dim lbls = c1Chart1.ChartLabels
lbls.LabelsCollection.Clear()
Dim i As Integer = 0
For Each c As String In cs
    Series = Chart.SeriesList.Add() '增加一个图系
    Series.Text = c'设置图系的标题
    series.length = drs.count
   
   
    For r As Integer = 0 To drs.Count - 1
        Series.X(r) = r
        Dim d As Date = drs(r)(c)
        Dim v As Double = val(format(d,"yyyyMM")) * 100 + 100 * (d.Day / Date.DaysInMonth(d.Year, d.Month))
        Series.Y(r) = Math.Floor(v)
        Dim lbl As C1.Win.C1Chart.Label = lbls.LabelsCollection.AddNewLabel()
        lbl.Text = Format(d, "yyyy年MM月dd日")
       
        lbl.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
        lbl.AttachMethodData.GroupIndex = 0
        lbl.AttachMethodData.SeriesIndex = i
        lbl.AttachMethodData.PointIndex = r
        lbl.Style.ForeColor = Color.Red
        lbl.Compass = LabelCompassEnum.South
        lbl.Visible = True
       
        Chart.AxisX.SetValueLabel(r, drs(r)("工程名称")) '指定字符表示
        If mind = Nothing OrElse mind > drs(r)(c) Then
            mind = drs(r)(c)
        End If
        If maxd = Nothing OrElse maxd < drs(r)(c) Then
            maxd = drs(r)(c)
        End If
       
    Next
   
    i += 1
Next
mind = new Date(mind.Year, mind.Month, 1)
maxd = new Date(maxd.Year, maxd.Month, 1)
Do While maxd >= mind
    Dim v As Double = val(format(mind,"yyyyMMdd"))
    Chart.AxisY.SetValueLabel(v,format(mind, "yyyy.MM")) '指定字符表示
    mind = mind.AddMonths(1)
Loop

Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.AxisY.AnnoWithLabels = True '启用字符标示
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)


 回到顶部
总数 20 上一页 1 2