搬家第七天-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显示数值的。

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