以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  图表二次生成如何处理?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=122775)

--  作者:ZJZK2018
--  发布时间:2018/8/2 0:19:00
--  图表二次生成如何处理?

代码如下:


\'\'=======招标控制价与报名家数=====
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("标录分析_Table01")  \'定义一个变量t引用数据表
Dim nms3() As String = {"中标比例","公司比例"}
Chart = Forms("标录分析").Controls("Chart3") \' 引用窗口中的图表
Dim fnt1 As New Font("楷体",12,FontStyle.Bold)
Chart.HeaderFont = fnt1
Chart.HeaderText = "球号中标比例与公司比例"  \'生成Chart总图名称

Chart.AxisX.ClearValueLabel  \'清除所有通过SetValueLabel设置的数值字符标示
Chart.SeriesList.Clear() \'清除图表原来的图系
\'t.Sort = "开标日期"
Dim gd As C1Chart.C1Chart = Chart.BaseControl   \'图表加滚动条
For Each c As String In nms3
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = c \'设置图系的标题
    Series.Length = t.Rows.Count \'设置图系的长度
    Series.DataLabelText = "{#YVAL}%" \'所有线条显示数据标示
    Dim pval As Double = 0
    For r As Integer = 0 To t.Rows.Count - 1
        If t.Rows(r)(c) = 0 Then
            For i As Integer = r+1 To t.Rows.count -1
                If t.Rows(i)(c) > 0 Then
                    Series.X(r) = r
                    pval = pval+(t.Rows(i)(c)-pval)/(i-r+1)
                    Series.Y(r) = Round2(pval * 100,2)
                    \'Series.Y(r) = t.Rows(r)(c)
                    Exit For
                End If
            Next
        Else
            pval = t.Rows(r)(c)
            Series.X(r) = r
            Series.Y(r) = Round2(pval * 100,2)
            \'Series.Y(r) = t.Rows(r)(c)
        End If
    Next
    Series.FitType = FitTypeEnum.Spline  \'采用平滑线条
Next
For r As Integer = 0 To t.Rows.Count - 1
    Chart.AxisX.SetValueLabel(r, Format(t.Rows(r)("开标日期"),"yy-MM-dd") & vbcrlf & Format(t.Rows(r)("投标家数"),"0家")) \'指定字符表示 
Next
Chart.AxisX.AnnoWithLabels = True \'启用字符标示
\'Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
Chart.AxisX.AnnoRotation = - 45 \'X轴标示逆时针旋转45度
Dim fnt As New Font("黑体",10)
Chart.AxisX.Font = fnt
gd.ChartArea.AxisX.ScrollBar.Scale = 1.8  \'比例,自己算  \'图表加滚动条
gd.ChartArea.AxisX.ScrollBar.Visible = True            \'图表加滚动条


图片点击可在新窗口打开查看此主题相关图片如下:第一次生成正常.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:第二次生成.png
图片点击可在新窗口打开查看




--  作者:有点甜
--  发布时间:2018/8/2 9:04:00
--  

1、你的表格是不是有空白行?筛选掉空白行是否可以?

 

2、做个例子发上来测试吧,代码看不出问题。


--  作者:ZJZK2018
--  发布时间:2018/8/2 13:08:00
--  
投标家数先输入3家后筛选数据生成图表,第二次输入15家后筛选数据生成图表就变成下图。


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


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图表20180731.table





--  作者:逛逛
--  发布时间:2018/8/2 14:24:00
--  
gd.ChartArea.AxisX.ScrollBar.Scale = 1.8  \'比例,自己算  \'图表加滚动条


比例在0-1 之间

--  作者:有点甜
--  发布时间:2018/8/2 14:40:00
--  
gd.ChartArea.AxisX.ScrollBar.Scale = 0.3  \'0-1,自己设置。
--  作者:ZJZK2018
--  发布时间:2018/8/2 14:43:00
--  
我改为0.8,效果还是不对
--  作者:有点甜
--  发布时间:2018/8/2 16:38:00
--  
以下是引用ZJZK2018在2018/8/2 14:43:00的发言:
我改为0.8,效果还是不对

 

改成多少正确?改成0.5、0.3有没有问题?和你表格行数有什么关联或者关系?


--  作者:ZJZK2018
--  发布时间:2018/8/2 16:55:00
--  
有点甜老师:
按你的说法我都试过,没用,老师能否帮我测试一下,附件在3楼

--  作者:有点甜
--  发布时间:2018/8/2 17:19:00
--  
以下是引用ZJZK2018在2018/8/2 16:55:00的发言:
有点甜老师:
按你的说法我都试过,没用,老师能否帮我测试一下,附件在3楼

 

1、如何才是正确的效果?

 

2、改成0.5有什么不对?哪里不对?


--  作者:ZJZK2018
--  发布时间:2018/8/2 17:45:00
--  
老师你能帮我测试一下吗?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图表20180731.table



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


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