搬家第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
保存运行后,效果是这样子的: