搬家第11天-147.Wincc V7.3 OWC Chart控件初步使用9-一个控件呈现多种图表
有时候我们希望在同一个chart中同事看到柱状图和曲线图,这个可以通过在chart控件的add事件中增加图表来实现。假设画面中已经有了一个数据表格LV,放置一个OWC Chart控件,名字修改为Chart,放置一个按钮,按钮的鼠标点击事件中添加以下vbs代码:
Sub OnClick(ByVal Item)
Dim LV,Chart,cht,c,cst,dl,xValue(),y1Value(),y2Value(),y3Value(),y4Value(),count,i
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(i) & "-" & CStr(LV.Listitems.item(i).listsubitems.item(3).text)
y1Value(i)=LV.Listitems.item(i).listsubitems.item(4).text
y2Value(i)=LV.Listitems.item(i).listsubitems.item(5).text
y3Value(i)=LV.Listitems.item(i).listsubitems.item(6).text
Next
'初始化图表内容
With Cht
'.type=c.chChartTypeLine '不带标记的直线图标
.type=c.chChartTypeSmoothLine
For i=0 To 2
.SeriesCollection.Add
.SeriesCollection.item(i).caption="流量" & CStr(i+1) '修改图列名称
Set dl = .SeriesCollection.item(i).DataLabelsCollection.Add
dl.HasValue = True
dl.Font.Size = 9
dl.Font.Color = vbBlack
Next
'坐标轴范围
With .Axes
.Item(1).Scaling.Minimum=1
.Item(1).Scaling.Maximum=count
.Item(1).HasTitle=True
.Item(1).Title.Caption ="时间"
.Item(0).Scaling.Minimum=0
.Item(0).Scaling.Maximum=250
.Item(0).HasTitle=True
.Item(0).Title.Caption ="流量"
'有主网格线
.Item(0).HasMajorGridlines=True
.Item(0).HasTickLabels=True
.Item(0).HasAutoMajorUnit=True
End With
.HasLegend =True
End With
With cst
.Caption="这是三个流量对比的图表"
.Font.Color =vbBlue
.Font.Name="微软雅黑"
.Font.size=20
End With
'添加数据
'X轴数据
cht.SetData c.chDimCategories,c.chDataLiteral,xValue
'Y轴数据
cht.SeriesCollection.item(0).SetData c.chDimValues,c.chDataLiteral,y1Value
cht.SeriesCollection.item(1).SetData c.chDimValues,c.chDataLiteral,y2Value
cht.SeriesCollection.item(2).SetData c.chDimValues,c.chDataLiteral,y3Value
' 绘制柱状图
Set cht=Chart.Charts.Add
'chart.Charts.Item(1).Left =0
With Cht
.type=c.chChartTypeColumnClustered '柱状图
For i=0 To 2
.SeriesCollection.Add
Next
'添加数据
'X轴数据
cht.SetData c.chDimCategories,c.chDataLiteral,xValue
'Y轴数据
cht.SeriesCollection.item(0).SetData c.chDimValues,c.chDataLiteral,y1Value
cht.SeriesCollection.item(1).SetData c.chDimValues,c.chDataLiteral,y2Value
cht.SeriesCollection.item(2).SetData c.chDimValues,c.chDataLiteral,y3Value
End With
End Sub
最终做出来就是这个效果: