Foxtable(狐表)用户栏目专家坐堂 → [求助]跨年月份数据的图表如何绘制


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

主题:[求助]跨年月份数据的图表如何绘制

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


加好友 发短信
等级:婴狐 帖子:6 积分:101 威望:0 精华:0 注册:2016/5/19 14:47:00
[求助]跨年月份数据的图表如何绘制  发帖心情 Post By:2016/5/26 14:52:00 [只看该作者]

首先说一下想要实现的功能:通过在窗口中输入日期范围,自动生成图表。

例如:数据源为下图,想要生成 2014年3月 至 2015 年 9 月 或者 2014年6月 至 2015年1月 的图表。

          同时X轴的显示格式为 “XXXX年-XX月”

注意:要求数据在同一图系显示

请问,如何实现?

图片点击可在新窗口打开查看



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


加好友 发短信
等级:婴狐 帖子:6 积分:101 威望:0 精华:0 注册:2016/5/19 14:47:00
  发帖心情 Post By:2016/5/26 16:21:00 [只看该作者]

自己想了一个笨办法

设 数据源 为 “统计表1” 包含 “年”,“月”,“数量” 三列

生成一个临时表“临时1” 包含“日期”,“数量”两列
 
其中,“临时1”的“日期”列 为 字符型 ,利用“统计表1” 中的“年”,“月”两列计算得出。

最后在利用表格“临时1” 生成图表。

这样从基础数据要先利用分组统计得出 “统计表1”,在从“统计表1”生成一个临时表,最后在绑定到图表。

感觉比较繁琐,不知道各位高手有没有更简单的方法来实现


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/26 16:41:00 [只看该作者]

参考代码

 

Dim y1 As String = "2014"
Dim m1 As String = "3"
Dim y2 As String = "2015"
Dim m2 As String = "9"

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
Series = Chart.SeriesList.Add() '每年一个图系
Dim dt As DataTable = DataTables("统计表1")
Dim d1 As Date = new Date(y1,m1,1)
Dim d2 As Date = new Date(y2,m2,1)
series.Length = DateDiff("m",d1,d2)+1

For i As Integer = 0 To series.Length-1
    Dim d As Date = d1.AddMonths(i)
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = val(dt.Compute("sum(数量)", "年='" & d.year & "' and 月='" & d.month & "'"))
    Chart.AxisX.SetValueLabel(i, Format(d, "yyyy年-MM月")) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.AxisX.AnnoRotation = - 45


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


加好友 发短信
等级:婴狐 帖子:6 积分:101 威望:0 精华:0 注册:2016/5/19 14:47:00
  发帖心情 Post By:2016/5/26 16:53:00 [只看该作者]

先感谢版主大人的解答。

刚开始入门,一时看的不是很明白,明天仔细读一下。

以后也希望版主能够多多指点。

再次感谢图片点击可在新窗口打开查看

 回到顶部