以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨年月份数据的图表如何绘制  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85473)

--  作者:c2869527
--  发布时间:2016/5/26 14:52:00
--  [求助]跨年月份数据的图表如何绘制
首先说一下想要实现的功能:通过在窗口中输入日期范围,自动生成图表。

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

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

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

请问,如何实现?

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



--  作者:c2869527
--  发布时间:2016/5/26 16:21:00
--  
自己想了一个笨办法

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

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

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

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

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


--  作者:大红袍
--  发布时间: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
--  发布时间:2016/5/26 16:53:00
--  
先感谢版主大人的解答。

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

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

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