搬家第11天-150.Wincc V7.3 OWC Chart控件初步使用12-多种图形类型混合

前面的博客介绍的统计图表几个变量都是使用同一种图形方式,有时候我们需要不同的变量使用不同的图形表现方式,本文仍然以前一篇博客中的四个变量为例介绍,流量1、流量2和流量3使用曲线,流量4使用柱状图。

在画面上放置一个OWC chart控件,名字修改为Chart,用于生成统计图表;放置一个按钮,在按钮的鼠标点击事件中添加以下vbs脚本:

 Sub OnClick(ByVal Item)                
Dim LV,Chart,cht,c,cst,xValue()
Dim y1Value(),y2Value(),y3Value(),y4Value()
Dim y2Axes,y3Axes,y4Axes,count,i
Dim sc1,sc2,sc3,sc4
Dim dl1,dl2,dl3,dl4
Set Chart=ScreenItems("Chart")
Set LV=ScreenItems("LV")
count=LV.listitems.count
Redim xValue(count),y1Value(count),y2Value(count),y3Value(count),y4Value(count)
Set c=Chart.constants
Chart.Clear '先清空
Set cht=Chart.Charts.Add
Chart.HasChartSpaceTitle=True
Set cst=Chart.ChartSpaceTitle 

'定义横纵坐标内容数组
For i=1 To count 
 xValue(i)= CStr(LV.Listitems.item(i).listsubitems.item(1).text)
 y1Value(i)=LV.Listitems.item(i).listsubitems.item(2).text
 y2Value(i)=LV.Listitems.item(i).listsubitems.item(3).text
 y3Value(i)=LV.Listitems.item(i).listsubitems.item(4).text
 y4Value(i)=LV.Listitems.item(i).listsubitems.item(5).text
Next

'初始化图表内容
With Cht
 .type=c.chChartTypeSmoothLine
 .HasLegend =True
 With .Axes
  .Item(0).Scaling.Minimum=1
  .Item(0).Scaling.Maximum=count
  .Item(0).HasTitle=True
  .Item(0).Title.Caption ="时间"  
  .Item(1).Scaling.Minimum=0
  .Item(1).Scaling.Maximum=50
  .Item(1).HasTitle=True
  .Item(1).Title.Caption ="流量"'  
 '有主网格线
  .Item(0).HasMajorGridlines=True
  .Item(0).HasTickLabels=True
  .Item(0).HasAutoMajorUnit=True
 End With
 '流量1
 Set sc1=.SeriesCollection.Add 
 sc1.caption="流量1"
 sc1.Ungroup True
 'x轴数据
 .SetData c.chDimCategories,c.chDataLiteral,xValue
 'Y轴数据
 sc1.SetData c.chDimValues,c.chDataLiteral,y1Value 
 Set dl1 = sc1.DataLabelsCollection.Add
 dl1.HasValue = True
 dl1.Font.Size = 9
 dl1.Font.Color = vbBlack
 
 '流量2 
 Set sc2=.SeriesCollection.Add
 sc2.caption= "流量2"
 sc2.Ungroup True
 Set y2Axes = .Axes.Add(.SeriesCollection.Item(1).Scalings(c.chDimValues))
 y2Axes.Position = c.chAxisPositionRight
 y2Axes.Scaling.Minimum=0
 y2Axes.Scaling.Maximum=500
 'Y轴数据
 sc2.SetData c.chDimValues,c.chDataLiteral,y2Value
 Set dl2 = sc2.DataLabelsCollection.Add
 dl2.HasValue = True
 dl2.Font.Size = 9
 dl2.Font.Color = vbBlack
 
 '流量3
 Set sc3=.SeriesCollection.Add
 sc3.caption="流量3"
 sc3.Ungroup True
 Set y3Axes = .Axes.Add(.SeriesCollection.Item(2).Scalings(c.chDimValues))
 y3Axes.Position = c.chAxisPositionRight
 y3Axes.Scaling.Minimum=0
 y3Axes.Scaling.Maximum=5000
 'Y轴数据
 sc3.SetData c.chDimValues,c.chDataLiteral,y3Value
 Set dl3 = sc3.DataLabelsCollection.Add
 dl3.HasValue = True
 dl3.Font.Size = 9
 dl3.Font.Color = vbBlack
 
 '流量4
 Set sc4=.SeriesCollection.Add
 sc4.caption="流量4" 
 sc4.Ungroup True
 Set y4Axes = .Axes.Add(.SeriesCollection.Item(3).Scalings(c.chDimValues))
 y4Axes.Position = c.chAxisPositionRight
 y4Axes.Scaling.Minimum=0
 y4Axes.Scaling.Maximum=100000
 sc4.Type=c.chChartTypeColumnClustered
 'Y轴数据
 sc4.SetData c.chDimValues,c.chDataLiteral,y4Value
 Set dl4 = .SeriesCollection.item(3).DataLabelsCollection.Add
 dl4.HasValue = True
 dl4.Font.Size = 9
 dl4.Font.Color = vbBlack
End With
With cst
 .Caption="这是四个差距较大流量对比的图表"
 .Font.Color =vbBlue
 .Font.Name="微软雅黑"
 .Font.size=20
End With 
End Sub

保存运行后,效果是这样子的:

 

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