搬家第五天-128.Wincc V7.3 MSChart控件初步使用6-叠加直方图

 前面的博客介绍了使用MSChart制作百分比饼图,饼图一次性只能体现某一天各装置的产量百分比情况。本文介绍如何使用MSChart控件制作叠加直方图,可以在一个控件内把所有日期各装置产量情况展示出来。

     假设有一个车间有5套生产装置生产同样的产品,每天各装置的产量已经记录在后台报表中,有一个ListView控件,名字叫做LV,把产量表读取出来,是这个样子:

画面上放置一个MSChart,名字叫做Chart,放置一个按钮,用于生成统计图,按钮的鼠标点击事件中添加以下vbs脚本:

Sub OnClick(ByVal Item)                                                   
Dim LV,Chart,RowCount,i
Dim MyDate(),produce1(),produce2(),produce3(),produce4(),produce5(),SumProduce()
Set LV=ScreenItems("LV")
Set Chart=ScreenItems("Chart")
RowCount=LV.listitems.count
Redim MyDate(RowCount),produce1(RowCount),produce2(RowCount),produce3(RowCount),produce4(RowCount),produce5(RowCount),SumProduce(RowCount)
'SumProduce=0
For i=1 To RowCount
 MyDate(i)=CStr(LV.listItems.item(i).listsubitems.item(1).text)
 produce1(i)=CDbl(LV.listItems.item(i).listsubitems.item(2).text)
 produce2(i)=CDbl(LV.listItems.item(i).listsubitems.item(3).text)
 produce3(i)=CDbl(LV.listItems.item(i).listsubitems.item(4).text)
 produce4(i)=CDbl(LV.listItems.item(i).listsubitems.item(5).text)
 produce5(i)=CDbl(LV.listItems.item(i).listsubitems.item(6).text)
 SumProduce(i)=CDbl(LV.listItems.item(i).listsubitems.item(7).text)
Next

With Chart
 .TitleText = "产量" 
 .ColumnCount=5 '5个曲线
 .RandomFill=False
'   '设置图线的外观
'   '设置XY轴
   .Plot.Axis(0).ValueScale.Auto = 0   
   .Plot.Axis(1).ValueScale.Auto = 0
'//  '设置最大值
   .Plot.Axis(0).ValueScale.Maximum = RowCount '设置横轴标注最大值
   .Plot.Axis(1).ValueScale.Maximum = 1300 '设置纵轴标注最大值
'//  '设置最小值
   .Plot.Axis(0).ValueScale.Minimum = 0
   .Plot.Axis(1).ValueScale.Minimum = 0 
 .RowCount =RowCount 
   .Plot.Axis(0).AxisGrid.MajorPen.Style = 1
   .Plot.Axis(1).AxisGrid.MajorPen.Style = 1
   .Plot.AutoLayout = 1
   .Plot.UniformAxis = 0
    .chartType = 1 '直方图 
    .ShowLegend = 1  '显示图例
   .AllowSeriesSelection=False '不允许选取整个系列
   .column=1
 .SeriesColumn=1
 For i=1 To RowCount
  .Row = i 
  .data=produce1(i)
 Next
 
 '曲线2
 .column=2
 .SeriesColumn=1
 For i=1 To RowCount
  .Row = i
  .data=produce2(i)
 Next
 
 '曲线3
 .column=3
 .SeriesColumn=1
 For i=1 To RowCount
  .Row = i
  .data=produce3(i)
 Next
 
 '曲线4
 .column=4
 .SeriesColumn=1
 For i=1 To RowCount
  .Row = i
  .data=produce4(i)
 Next
 
 '曲线5
 .column=5
 .SeriesColumn=1
 For i=1 To RowCount
  .Row = i
  .data=produce5(i)
 Next  
  
    For i=1 To RowCount
 .Row = i
 .RowLabel =CStr(MyDate(.Row))
    Next
    
    With .DataGrid
        .ColumnCount = 5
       For i = 1 To .ColumnCount
   .ColumnLabel(i, 1) = "装置 " & i & "产量"
  Next
    End With
   
    For i=1 To 5
    With .Plot.SeriesCollection(i).DataPoints(-1)
    .DataPointLabel.LocationType = 1 ''&& 为1时显示数值,0为不显示
      '将数据点标记设置成可见的。
      .Marker.Visible = True
    End With
   Next   
End With
End Sub

保存运行项目,点击按钮呈现如下效果

图标上的标注数字有叉叉、方块、圆圈等等图标,看着丑丑的,如果不喜欢,就把.Marker.Visible = True
修改成.Marker.Visible = False 就是行了。这个例子中数字是显示在图块上部的,如果不喜欢可以把.DataPointLabel.LocationType = 1修改成.DataPointLabel.LocationType = 2就显示在图块中部;.DataPointLabel.LocationType = 3就显示在图块底部。

posted @ 2021-02-02 20:20  来自金沙江的小鱼  阅读(979)  评论(0编辑  收藏  举报