搬家第七天-133.Wincc V7.3 OWC Chart图表控件使用初步2-多条曲线绘制,同时加数据标注
前面的博客介绍了最简单的情形:只有一条曲线,数据都是事先知道的常数。但实际使用中的情况没那么简单,往往多条曲线同时呈现在一个chart上,而且还要标注图列和数据,数据大小和数量也无法事先预知,这是我们做的程序就需要有一定的适应性。本文以绘制ListView表格中三个变量的对比曲线为例,介绍脚本的编写。
假设画面上已经有了一个ListView控件,名字叫做LV,事先装入了一批数据,如下图所示“
我们在画面上增加一个Microsoft Office Chart控件,名字修改为Chart,增加一个按钮,在按钮的鼠标点击事件中添加以下vbs脚本:
Sub OnClick(ByVal Item)
Dim LV,Chart,cht,c,cst,dl,xValue(),y1Value(),y2Value(),y3Value(),count,i
Set Chart=ScreenItems("Chart")
Set LV=ScreenItems("LV")
count=LV.listitems.count
Redim xValue(count),y1Value(count),y2Value(count),y3Value(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 '不带标记的直线图标
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=300
.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
End Sub
保存之后运行,是这样的效果:
有了数字标注虽然信息量大了,但是数字挤在一起,看起来费劲,我们把鼠标放到曲线上,会有tooltip显示数值的。