以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]画图X轴标识重画的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=34354)

--  作者:ifastudy
--  发布时间:2013/6/6 10:28:00
--  [求助]画图X轴标识重画的问题
如下图.点中树型目录的月份,会自动绘出一个月的产能利用情况.只点一次的话绘图没有问题,多点几个月份时,X轴标识重复会画. 绘图代码如下:

If e.Node.Level = 1
    Dim Chart As WinForm.Chart \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim XLable As String
    Dim i As Integer =0
    
    Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
    Chart.AxisY.Min = 0 \'指定Y轴的最小值
    Chart.AxisY.Max =120 \'指定Y轴的最大值
    Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)
    Chart.Stacked = True
    Chart.AxisX.GridMajorVisible=True
    Chart.AxisY.GridMajorVisible=True
    Chart.AxisX.AnnoWithLabels = True
Chart.AxisX.AnnoRotation = -30
    
    
    Chart.SeriesList.Clear() \'清除图表原来的图系
    
    
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = "翻单产能" \'设置图系的标题
    Series.Length = DataTables("生产日历").Compute("Count(日期)","[月份]=\'" & e.Node.Name & "\'")
    
    \'Series.DataLabelText = "{#YVAL}"
    Series.FillColor = Color.Green
    i=0
    For Each r As DataRow In DataTables("生产日历").Select("月份=\'" & e.Node.Name & "\'")
        XLable = r("日期")
        Series.X(i)= i
        Series.Y(i)=int(r("产能系数")*r("翻单产能比例")*100)
        Chart.AxisX.SetValueLabel(i, XLable)
        i = i+1
    Next
    
    
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = "首单产能" \'设置图系的标题
    Series.Length = DataTables("生产日历").Compute("Count(日期)","[月份]=\'" & e.Node.Name & "\'")
    Series.DataLabelText = "{#YVAL}"
    Series.FillColor = Color.Blue
    i=0
    For Each r As DataRow In DataTables("生产日历").Select("月份=\'" & e.Node.Name & "\'")
        XLable = r("日期")
        Series.X(i)= i
        Series.Y(i)=int(r("产能系数")*(1-r("翻单产能比例"))*100)
        Chart.AxisX.SetValueLabel(i, XLable)
        i = i+1
    Next
    
    \'------------------------
    \'Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
    
End If


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


--  作者:狐狸爸爸
--  发布时间:2013/6/6 10:45:00
--  

看看这个:
 
http://www.foxtable.com/help/topics/2319.htm


 

每次设置新的标题之前,执行一次:
Chart.AxisX.ClearValueLabel

 

清除上一次的设置。

[此贴子已经被作者于2013-6-6 10:45:32编辑过]

--  作者:ifastudy
--  发布时间:2013/6/6 10:51:00
--  
搞定,这谢谢狐爸