以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  生成的柱形图表,标示错误,哪里错了?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67460)

--  作者:sloyy
--  发布时间:2015/4/24 17:32:00
--  生成的柱形图表,标示错误,哪里错了?
我生成了一张柱形图,却发现2015年1月的数据标示为0, 正确应该是0.21 ,如图:

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

哪里错了?

代码如下:
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar \'设置图表类型
Chart.SeriesList.Clear() \'清除图表原来的图系
For n As Integer = e.Form.Controls("ComboBox1").text  To e.Form.Controls("ComboBox2").text
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = 13         \'图系的数据点数等于表的行数
    Series.DataLabelText = "{#YVAL}"
    Series.DataLabelCompass=LabelCompassEnum.North
    
    For i As Integer = 1 To 12\'指定每个数据点的位置
        Series.X(i) = i     \'指定水平坐标 月份
        Dim r As DataRow = DataTables("qmdkye").Find("数据日期 = " & n & Format(i,"00"))
        If r IsNot Nothing
            Series.Y(i) = r("贷款逾期率") \'指定垂直坐标
        Else
            Series.Y(i) = 0
        End If
    Next
    \'设置了每个图系的标题:
    Series.Text =N &"年"
Next
\'在指定的位置显示图例:
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:折线图.foxdb


[此贴子已经被作者于2015/4/24 18:00:30编辑过]

--  作者:sloyy
--  发布时间:2015/4/24 17:48:00
--  
初步发现,错误出在第一个循环, 第二年的所有数据标示都为0
--  作者:狐狸爸爸
--  发布时间:2015/4/24 18:04:00
--  
没办法,这是控件bug,你索性用百分比表示,图示数据乘以100:


Series.Y(i) = r("贷款逾期率") * 100 \'指定垂直坐标


--  作者:sloyy
--  发布时间:2015/4/24 18:16:00
--  
如果不用循环,手工启用双图系,能不能避开这个BUG?
--  作者:sloyy
--  发布时间:2015/4/24 18:38:00
--  
试过了 双图系也不行,第二个图示还是0
--  作者:游
--  发布时间:2015/4/24 19:41:00
--  
你可以用随机数测试一下,好像不是Bug
--  作者:sloyy
--  发布时间:2015/4/24 21:13:00
--  
是bug  它把第二个循环的数字全部做了四舍五入