Foxtable(狐表)用户栏目专家坐堂 → 图表Y轴显示重叠


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

主题:图表Y轴显示重叠

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


加好友 发短信
等级:小狐 帖子:353 积分:3023 威望:0 精华:0 注册:2018/2/27 17:32:00
图表Y轴显示重叠  发帖心情 Post By:2019/4/23 22:03:00 [只看该作者]

如图,代码如下,为什么多生成几次图表,Y轴显示的字就看不清楚了“Chart.SeriesList.Clear() ”这行代码没有用吗

With Tables("ftyptop")
    Dim q As Integer
图片点击可在新窗口打开查看此主题相关图片如下:818.png
图片点击可在新窗口打开查看
    q = .FindRow("[检测号] = '" & e.Form.Controls("ComboBox1").value & "'") '从第一行开始查找
    If q >= 0 Then '如果找到的话
        .Position = q '定位到找到的行.
    End If
End With
Dim r As Row =  Tables("ftyptop").current


'绘图
Dim Chart  As WinForm.Chart  '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量

Dim t As Table =  Tables("FTYptop") '定义一个变量t引用数据表
Chart = forms("ftyptop").controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
'Chart.DataSource = "FTYptop" '设置绑定表
Chart.ChartType = ChartTypeEnum.Bar
'Chart.AxisY.Min = 0.98 '指定Y轴的最小值
'Chart.AxisY.Max = 1 '指定Y轴的最大值
'Chart.AxisY.Major = 0.002 '主刻度间隔值为
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系

Series.Length = T.Cols.count-6 '新增图系包括个数据点
For i As Integer = 0 To T.Cols.count-7 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = r(i+6) '垂直坐标成
    Chart.AxisX.SetValueLabel(i, t.cols(i+6).name) '指定字符表示
Next
Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度
Series.DataLabelBackColor = Color.Blue '蓝底
Series.DataLabelForeColor = Color.White '白字

Dim c1Chart1 = Chart.basecontrol
Dim lbls = c1Chart1.ChartLabels
Dim v As Integer = 0
For i As Integer = 0 To T.Cols.count-6
    Dim lbl As C1.Win.C1Chart.Label = lbls.LabelsCollection.AddNewLabel()
    For Each c As Col In t.Cols
        Select Case c.name
            Case "检测号","良率","LCD型号V模组型号","入数","NG数","投产单号"
                
            Case Else
                v = v + r(c.name)
        End Select
    Next
    If series.y(i) > 0 Then
        lbl.Text = Format(series.y(i)/v, "0.0%")
    End If
    v = 0

    lbl.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
    lbl.AttachMethodData.GroupIndex = 0
    lbl.AttachMethodData.SeriesIndex = 0
    lbl.AttachMethodData.PointIndex = i
    lbl.Style.ForeColor = Color.Red
    lbl.style.font = new font("仿宋体", 12)
    lbl.Compass = LabelCompassEnum.South
    lbl.Visible = True
    
Next

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/23 22:38:00 [只看该作者]

清除,加入代码,如

 

Chart.AxisX.ClearValueLabel


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


加好友 发短信
等级:小狐 帖子:353 积分:3023 威望:0 精华:0 注册:2018/2/27 17:32:00
  发帖心情 Post By:2019/4/24 10:26:00 [只看该作者]

不行呢,关键是下面的代码生成的%比显示会重叠 怎么办??

Dim v As Integer = 0
For i As Integer = 0 To T.Cols.count-6
    Dim lbl As C1.Win.C1Chart.Label = lbls.LabelsCollection.AddNewLabel()
    For Each c As Col In t.Cols
        Select Case c.name
            Case "检测号","良率","LCD型号V模组型号","入数","NG数","投产单号"
                
            Case Else
                v = v + r(c.name)
        End Select
    Next
    If series.y(i) > 0 Then
        lbl.Text = Format(series.y(i)/v, "0.0%")
    End If
    v = 0

    lbl.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
    lbl.AttachMethodData.GroupIndex = 0
    lbl.AttachMethodData.SeriesIndex = 0
    lbl.AttachMethodData.PointIndex = i
    lbl.Style.ForeColor = Color.Red
    lbl.style.font = new font("仿宋体", 10)
    lbl.Compass = LabelCompassEnum.South
    lbl.Visible = True
    
Next

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


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

在循环外面,执行

 

lbls.LabelsCollection.clear

 


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


加好友 发短信
等级:小狐 帖子:353 积分:3023 威望:0 精华:0 注册:2018/2/27 17:32:00
  发帖心情 Post By:2019/4/24 15:24:00 [只看该作者]

很好,果然解决了,只是你说的这些帮助里没找到呢,在哪里有相关的介绍???

 回到顶部