Foxtable(狐表)用户栏目专家坐堂 → 还是图表的BUG


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

主题:还是图表的BUG

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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
还是图表的BUG  发帖心情 Post By:2019/5/26 0:39:00 [只看该作者]



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

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

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


这两天研究图表 发现很多问题

我还是在一个窗口页面里使用一个chart
通过按钮来渲染chart内容

现在发现一个问题
在button1 中生成一个以日为X轴的图表 1-31
在button2 中生成一个i为X轴的图表 i的值在1-10

如果先按button1 chart第一次正常 再按button2  chart的X轴间隔就缩的非常小 跟button2的内容不匹配
如果先按button2 chart正常 再按button1 正常 再按button2 又跟第一次操作一样 图表变样

button1代码:
Dim sql As String
sql="“
Dim cmd As new SQLCommand
cmd.ConnectionName=Functions.Execute("返回数据源")
cmd.CommandText=sql
Dim dt As DataTable
dt=cmd.ExecuteReader
Dim s As String="个人销售统计"
Dim g As New GroupTableBuilder(s, dt)
g.Groups.AddDef("个人")
g.Totals.AddDef("金额")
g.Build()
Tables(s).Sort="金额 desc "
Dim Chart As  WinForm.Chart '定义一个图表变量
Dim Series As  WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables(s) '定义一个变量t引用数据表
Chart= e.Form.Controls("Chart2") ' 引用窗口中的图表
Dim c1Chart1 = Chart.basecontrol
Dim lbls = c1Chart1.ChartLabels
lbls.LabelsCollection.Clear()
Chart.AxisX.ClearValueLabel()
Chart.AxisY.ClearValueLabel()
Chart.ChartType = ChartTypeEnum.bar '图表1类型改为Bar(条形)
Chart.SeriesList.Clear
Chart.SeriesList2.Clear
Chart.Axisx.Text=""

Series = Chart.SeriesList.Add()
Chart.Axisx.AnnoWithLabels = True
Dim lst As List(of DataRow)=DataTables(s).Select("金额>=0","金额 desc")
''新增图系包括10个数据点
Series.Length = lst.count
For i As Integer = 0 To lst.count-1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = math.round(lst(i)("金额")/10000,2 )'垂直坐标用随机数生成
    Chart.Axisx.SetValueLabel(i, lst(i)("个人"))
    series.TooltipText="{#YVAL}"
Next

button2 代码


Dim sql As String
sql="”
Dim cmd As new SQLCommand
cmd.ConnectionName=Functions.Execute("返回数据源")
cmd.CommandText=sql
Dim dt As DataTable
dt=cmd.ExecuteReader
Dim s As String="月销售统计"
Dim g As New GroupTableBuilder(s, dt)
g.Groups.AddDef("制单日期", "月")
g.Groups.AddDef("制单日期", DateGroupEnum.Day, "日")
g.Totals.AddDef("金额")
g.Build()
Tables(s).Sort="金额 desc "
Dim Chart As  WinForm.Chart '定义一个图表变量
Dim Series As  WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables(s) '定义一个变量t引用数据表
Chart= e.Form.Controls("Chart2") ' 引用窗口中的图表
Dim c1Chart1 = Chart.basecontrol
Dim lbls = c1Chart1.ChartLabels
lbls.LabelsCollection.Clear()
Chart.AxisX.ClearValueLabel()
Chart.AxisY.ClearValueLabel()
Chart.ChartType = ChartTypeEnum.bar '图表1类型改为Bar(条形)
Chart.SeriesList.Clear
Chart.SeriesList2.Clear
Chart.Axisx.Text=""
Chart.AxisX.AnnoWithLabels = False
Series = Chart.SeriesList.Add()
Series.Length = 31 
''Dim lst As List(of DataRow)=DataTables(s).Select("金额>=0","金额 desc")
Chart.AxisX.Min = 1  '指定X轴的最小值,也就是从1月开始
Chart.AxisX.Max = 31 ''指定X轴的最大值,一年只有12个月
For day As Integer = 1 To 31 '逐月设置坐标
    Series.X(day-1) = day  
Chart.Axisx.SetValueLabel(day, day)   '指定水平坐标为月份
    Dim r As DataRow = DataTables(s).Find("月 = " & Date.today.Month & " and 日=" & day)'找出对应年月的行
    If r IsNot Nothing '如果找到对应年月的行
        Series.Y(day-1) = math.round(r("金额")/10000,2) '指定数量作为垂直坐标
    End If
Next
series.TooltipText="{#YVAL}"




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/26 13:14:00 [只看该作者]

我分别测试下面代码没问题。请做一个具体实例发上来测试。

 

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = 30 '新增图系包括10个数据点
For i As Integer = 0 To 29 '指定每个数据点的位置

    Series.X(i) = i '指定水平坐标
    Series.Y(i) = i + Rand.Next(5) '垂直坐标用随机数生成
Next

 

-----------------

 

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = 10 '新增图系包括10个数据点
For i As Integer = 0 To 9 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = i + Rand.Next(5) '垂直坐标用随机数生成
Next


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


加好友 发短信
等级:狐精 帖子:3361 积分:24808 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2019/5/26 16:15:00 [只看该作者]

搞了一晚上 大概知道问题的所在了  同一个chart用多个代码生成的时候 什么clear根本没用  必须把所有属性重新定义一遍  我这个问题的原因 就是上一个表的X轴长度是30 下一个表变成5了 它不能自动匹配 需要手动去指定 总体感觉FT的chart速度比echart快 但是BUG太多 帮助写的也很简单 

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/26 20:00:00 [只看该作者]

1、做一个实例发上来测试;

 

2、你可以用多个chart控件,显示一个,隐藏其余的。


 回到顶部