1、第6章 数据的图形显示第6章数据的图形显示6.1 LabVIEW的图形显示件6.2 Waveform Chart6.2.1 Waveform Chart的组件及其功能6.2.2 Waveform Chart的设置6. Waveform Graph6.1 Waveform Graph的组件及其功能6.2 Waveform Graph 的设置6.3 Waveform Graph的数据类型6. XY Graph6.5 强度图6.5.1 Intensity Chart6.5.2 Intensity Graph6.6 数字波形图6.7 三维图形显示6.7.1 三维表面图3D Surface Graph6
2、.7.2 三维参数图3D Parametric Graph6.7.3 三维曲线图3D Curve Graph6.8 图片显示第6章数据的图形显示 用图形的形式显示测试数据与分析结果,可以看出被测试对象的变化趋势,使虚拟仪器的前面板变得更加形象直观。LabVIEW 提供了多种图形显示件,学会使用图形显示件,要了解它们的选项、所要求的数据类型和显示数据的方式。图6-1 LabVIEW的图形显示件子模板6.1 LabVIEW的图形显示件图6-1是LabVIEW 图形显示件Graph 子模板,这些图形显示件分别是。 图线Waveform Chart 图形Waveform Graph XY 图形XY G
3、raph 强度图线Intensity Chart 强度图形Intensity Graph 数字图形Digital Waveform Graph 三维表面图3D Surface Graph 三维参数图3 D Parametric Graph 三维曲线图3D Curve Graph 图片子模板Ctls 以上10个图标中,第3行的、 三个是用于三维图形的ActiveX控件容器;是一个子模板图标,包含一些图片显示控件。最常用的前6个显示件主要分为Chart 和Graph 两类。Chart 和Graph 很难从中文释义上来区分,即使这两个词的英文原意也不容易体现出它们在LabVIEW 中的差别。简单的讲
4、,它们最根本的差别就是描绘数据的方式不同,Chart 是一个点、一个点的描绘数据,而Graph是一块、一块的描绘数据,因此它们所要求的数据类型也就有所不同。在分别介绍这些显示件时不难看出它们的差别。6.2 Waveform Chart6.2.1 Waveform Chart的组件及其功能图6-2是一个显示了全部组件的Waveform Chart。在Waveform Chart上击右键弹出菜单,选Visible Items可以确定这些组件显示或不显示。以下是这些组件的功能。图6-2 Waveform Chart的组件 标签Label 一个对象被引用时总是通过标签与它联系的。 标题Caption标
5、题通常可以被标签代替,除非需要在前面板上显示与对象被引用时不同的名称。 纵坐标刻度Y scale 默认的纵坐标标签是Amplitude,可以用标签工具改为汉字。纵坐标刻度和横坐标刻度都可以设置为固定值或自动比例。转换的方法是在Chart上击右键弹出菜单,选X Scale或 Y Scale ,然后在下一级菜单上再选AutoScale X 或AutoScale Y 。如果是在刻度值或坐标标签上弹出菜单则可以直接选AutoScale X 或AutoScale Y 。刻度为固定值时,可以用操作工具或标签工具修改坐标初始值和终值;刻度为自动比例时LabVIEW 使图线纵坐标等于显示数据的最大幅值,横坐标
6、适应显示全部数据。但是使用自动比例会降低程序执行的效率。要改变坐标刻度区域的面积大小,需要使用定位工具拖动图线描绘区的任意一角,改变它的面积大小,从而使坐标刻度区域的面积改变。不能通过改变整个Chart的大小来改变坐标刻度区域的大小。 图线描绘区默认情况下的图线描绘区不显示栅格。如果需要显示栅格,在Chart上击右键弹出菜单,选X Scale或 Y Scale ,然后在下一级菜单上再选Formatting.。如果是在刻度值上弹出菜单则可以直接选Formatting.。弹出图6-3的Y Scale Formatting对话框后,在Grid Options 选框中点击左边一个图标,可以选择不显示栅
7、格、显示主栅格或显示子栅格。右边两个图标分别用于选择主栅格及子栅格的颜色。这个格式对话框可以在Select Scale选框中选择是设置纵坐标格式还是设置横坐标格式。还可以看到,其它能够设置的选项有:Scale Style 刻线与刻线值的样式。Mapping Mode 刻度值分布模式是线性坐标或对数坐标。Scaling Factors 坐标初值与坐标间隔。Format 坐标的数据格式。LabVIEW 默认的横坐标数据格式是表示数据点序号的整型数,如果设置为时间格式Time & Date 则这个整型数被转换为时间格式,并可以对时间格式做进一步设置。Digits of Precision坐标刻度数据
8、的记数方法与精度。图6-3 坐标格式设置 刻度图例Scale legend 刻度图例中绘有一个锁的图形的图标是刻度锁定钮,按一下变为锁住的样子就说明锁定在自动比例状态,它右边相邻的图标中亮起一个小绿灯;再按一下图标变为开锁的样子,说明刻度又变到固定值状态。在刻度图例最右边一个图标上击鼠标左键,弹出一个菜单可以在程序运行状态下修改刻度的格式,包括坐标刻度数据的记数方法与精度,刻度值分布模式,刻度值与刻度标签的可见性,栅格颜色等。 绘图图例Plot legend显示Chart中图线的样式,以利于区分每条线的意义。如果一个Chart中显示多条图线,可以用定位工具拖动绘图图例模板的任意一角使它扩大,从
9、而表达更多图线的图例。绘图图例模板中的文字可以用标签工具修改,例如一个Chart中有3条图线,可以把它们分别标记为温度、压力、流量。在绘图图例中每个图线上击右键弹出菜单,可以对这条图线的绘图方式、图线颜色、线型、线宽等做各种设置。 数字显示Digital display 显示图线最新一点数据的幅值。 横坐标刻度X scale 默认的横坐标标签是Time,其余参看前面纵坐标刻度一段。 图形操作模板Graph palette 图形模板中有3个图标按钮。按下最右边一个按钮,变为滚动模式,可以用鼠标拖动图线显示区,显示出图线窗口以外的内容。最左边一个和最右边一个互相切换。中间一个是放大按钮,按下这个按
10、钮,出现图6-4的下一级模板。图6-4 图形操作模板. 将一个矩形区域放大。. 将两条纵线之间的区域放大。. 将两条横线之间的区域放大。. 取消最后一次放大,恢复上一步设置。. 以一个点为中心放大。. 以一个点为中心缩小。 滚动条Scrollbar 水平移动图线,显示窗口以外的数据。6.2.2 Waveform Chart的设置1. 存储数据长度Waveform Chart 显示数据的方式是周期性的刷新显示区,并将数据存储在一块缓存区中。这个缓存区的大小默认值是1024个数据。如果需要改变这个值就在Chart 上弹出菜单,选Chart History Length ,在弹出的对话框中修改图线历
11、史长度。当Chart的横坐标值小于Chart History Length值时,用滚动条就可以显示缓存区中窗口以外的数据。当选择横坐标为自动比例时,滚动条消失,说明数据已经全部显示了。2. 刷新模式Chart有三种模式:条幅式Strip Chart、示波器式Scope Chart和扫描式Sweet Chart。缺省的刷新模式是条幅式。要改变显示模式时,在弹出菜单中选AdvancedUpdate Mode ,在弹出的下一级模板中选择需要的刷新模式。条幅式类似于纸带记录仪的滚动显示模式,每接收到一个新的数据,就显示在图线的右边缘,原有的值左移。示波器式显示模式是每接收到一个新数据,就把它描绘在上一
12、个最新数据的右侧。当图线画至右边界时,就擦除这段图线,再从左边界开始描绘一条新的图线。示波器式显示模式明显快于条幅式,因为它无需处理滚动过程所需的时间开销。扫描式与示波器式类似,不同的是数据到达右边界时,不将显示区清空,而是用一条垂直线界定新数据的起点,此线随新数据的到达在显示区内横移。图6-5是LabVIEW6.1ExamplesGeneralGraphsCharts.llb库中Charts. Vi示例程序前面板的一部分,分别显示了三种刷新模式。(a)Strip Chart (b) Scope Chart (c) Sweep Chart图6-5 Chart刷新模式3. Chart的多图线布置
13、方式在一个Chart中显示多条图线时,可以使用同一个图线描绘区,叫做层叠描绘Overlay Plots;或使用不同的图线描绘区,叫做堆积描绘Stack Plots。图6-6是图6-5程序前面板的另一部分,分别显示了两种布置方式。(a) Overlaid Plots (b) Stacked Plots图6-6 Chart的多图线布置方式在Chart上弹出菜单选Overlay Plots或Stack Plots可以进行两种布置方式的转换。在同一个图线描绘区显示多条图线时,也还可以选择单比例和多比例坐标刻度。图6-7的程序在一个Chart中显示了一个幅值为1的正弦波和一个幅值为5的方波,由于使用了不
14、同的坐标刻度比例,两者都充满了显示区域。建立多比例坐标刻度的方法是在坐标刻度值或坐标刻度标签上弹出菜单选Duplicate Scale 。图6-7 多比例坐标刻线的Chart6.2.2 Waveform Chart的数据类型图6-8显示了Waveform Chart可以接受的各种数据类型。图6-8 Chart可以接受的数据类型图6-8(a)的程序给Chart连接了单个数值,这个数值是数值函数子模板Numeric 中的 Random Number函数,每调用一次它产生一个01的随机数。这个程序每执行一次Chart就绘出一点,多次运行绘出一条线。图6-8(b)的程序为了更快刷新图线的显示,用了一个
15、For循环结构,把它的计数端口N设置为1024,这样它就运行1024次,产生1024个数据;使用For循环结构的索引数组的功能,将这些数据做成一个数组传递给Chart。这些数据一次绘出一条线。图6-8(c)的程序需要在Chart上描绘两条线,于是把两个数据用一个Bundle函数攒成一个簇,连接到Chart节点上。这个程序每执行一次,Chart就在两条线上各绘出一点,多次运行绘出两条线。图6-8(d)的程序为了更快刷新图线的显示,用了一个For循环结构把1024个簇数据做成一个簇数组传递给Chart,它用这些数据一次绘出两条线。图6-8(e)的程序调用了AnalyzeSignal Process
16、ingSignal Generation函数子模板中的Sine Wave 和Square Wave 两个VI,产生两个数组的数据,再将它们合成一个二维数组连接到Chart节点上,一次绘出两条曲线。需要说明的是,当一个Chart连接了一个二维数组,它是用这个数组的每一行数据描绘一条曲线。但是在默认情况下它认为输入的数组每一列包含一条曲线的数据,所以将连接的二维数组转置,即行列交换。而在这个例子里的二维数组本来就是每行包含一条曲线的数据,如果被变为两列数据,就不能正确显示在Chart上。所以还需要在Chart上弹出菜单,将transpose Array选项去掉。图6-8(f)的程序调用了Wavef
17、ormWaveform Generation函数子模板中的Sine Waveform VI,产生一个波形数据连接到Chart节点上,Chart根据波形数据绘制出一条曲线。图6-8(g)的程序调用了WaveformWaveform Generation函数子模板中的Sine Waveform VI和Square Waveform VI,产生两个波形的数据,再将它们合成一个波形数组连接到Chart节点上,一次绘出两条曲线。不难想到,这个波形数组有几个波形数据就会画出几条曲线。6. Waveform Graph6.1 Waveform Graph的组件及其功能Waveform Graph的组件及其功
18、能大部分与WaveformChart是相似或相同的,关于这些内容本节不再重复,请读者参看.节。这里主要介绍两点两者的不同之处:Waveform Graph没有数字显示Digital display,但是它提供了游标工具。利用Graph上两条游标刻线交点上的游标坐标值,能够准确的读出图线上任何一点的数据值。设置游标要通过游标图例板。在Graph上弹出菜单选Visible ItemsCursor Legend ,即可显示出游标图例板,如图所示。默认的游标图例板有两个游标,可以用定位工具拖动它的任意一角使它扩大或缩小,以显示需要的游标数目。图6-9 Graph的游标游标图例板上各个元件的名称及功能为
19、: 游标名如果需要把游标名显示在游标线上,可以在游标显示控制钮上击鼠标左键,在弹出的菜单上选show name。 游标X坐标值。 游标Y坐标值。如果是强度图,还有一项Z坐标值。 移动控制钮。按一下移动控制钮,它左上角的小绿灯点亮,这时可以用游标移动器移动游标。再按一下移动控制钮,它左上角的小绿灯熄灭,这时按游标移动器这个游标不会移动。可以同时激活多个游标,允许游标移动器移动这些游标。 游标显示控制在游标显示控制钮上击鼠标左键弹出一个锁定控制菜单,可以设置游标的各种显示选项,包括游标的颜色、样式、游标点的样式、游标线的线型、线宽等。 锁定控制钮在锁定控制钮上击鼠标左键弹出一个菜单,菜单最上一个选
20、项是Allow Drag,不选中这个选项则不允许用用户移动游标,程序运行后,锁定控制菜单上各选项也都不能用;如果选中这个选项,则无论程序是否运行,锁定控制菜单上可以设置以下各选项:Free 允许将游标移动到图线显示平面上任何点;Snap to Point 游标锁定在任意一条线的某个点上;Lock to Plot 游标锁定在某一条线上。选择下面的图线选项可以在锁定状态下将游标直接移动到某一条图线上。 游标移动器可以用鼠标点击它的4个三角,上下左右移动活动的游标。6.2 Waveform Graph 的设置Waveform Graph在同一个图线描绘区显示多条图线时,也可以选择单比例和多比例坐标刻
21、度。设置的方法与Waveform Chart是相同的。Waveform Chart的其它设置对于Waveform Graph都无须考虑。6.3 Waveform Graph的数据类型图6-10(a)的程序调用了AnalyzeSignal ProcessingSignal Generation函数子模板中的Sine Wave VI,产生一个数组的数据连接到graph的节点上,程序每执行一次绘出一条曲线。Sine Wave VI在默认情况下一次产生128个数据点。所以曲线长为128个横坐标点。Graph在默认情况下显示数据是从0开始每一点显示一个数据,如果需要改变坐标的设置可以像图6-10(b)的
22、程序那样,用一个Bundle函数将x0、dx值和描绘曲线的数据y数组攒成一个簇,再连接到Graph的节点上。由于这里dx值设为2,所以运行程序后可以看到,描绘同样的128个数据点。但是曲线长为256个横坐标点。图6-10(c)的程序调用了AnalyzeSignal ProcessingSignal Generation函数子模板中的Sine Wave 和Square Wave 两个VI,产生两个数组的数据,再将它们合成一个二维数组连接到Graph节点上,一次绘出两条曲线。Graph连接二维数组时也是将这个数组的每一行数据描绘一条曲线。但是它在默认情况下并不将连接的二维数组转置。由于这里连接的二
23、维数组本身就是每行包含一条曲线的数据,所以也不需要改变transpose Array选项图6-10(d)的程序给图6-10(c)的程序设置了x0和dx值。它给Graph连接的数据是一个簇,其中包括x0、dx和一个二维数组。这种情况适用于多信道用同样采样率采样的情况。图6-10(e)的程序相当于将两个图6-10(b)的簇做成一个簇数组。这里为两条曲线分别设置了x0和dx值。这种情况适用于多信道用不同采样率采样的情况。图6-10(f)的程序调用了WaveformWaveform Generation函数子模板中的Sine Waveform和Square Waveform 两个VI,产生两个波形的数
24、据,将它们合成一个波形数组连接到Chart节点上,一次绘出两条曲线。当然也可以给Graph连接单个的波形VI,一次绘出一条曲线。图6-10(g)的程序给Graph节点连接了一个描绘曲线数组。描绘曲线数组由一些簇组成,每个簇包含一条曲线的数据,即一个一维数组。为什么需要用描绘曲线数组而不是二维数组呢?因为在程序中Sine Waveform VI的samples参数赋值为128,即一次产生128个数据点;而Square Waveform VI的samples参数赋值为256,即一次产生256个数据点。当各条曲线数据点数不同,例如多信道采样各信道采样数不同时,就应该用描绘曲线数组这种数据结构。因为做
25、二维数组时LabVIEW会自动将短的一维数组后面补0,可能使数据的实际意义不清楚。图6-10(h)的程序只是给图6-10(g)的程序设置了x0和dx值。它给Graph节点连接的数据是一个簇,其中包括x0、dx和一个描绘曲线数组。图6-10 Graph可以接受的数据类型从图6-10可以看出其中(a)、(c)、(f)和图中没有表示出来的连接一个波形数据的情况与Chart的数据类型都是一样的。6. XY GraphWaveform Graph和WaveformChart的横坐标都是单调均匀的,这样它们就不能描绘出非均匀采样的数据和某些平面曲线,因此LabVIEW 提供了XY Graph这种图形显示件
26、。图6-11 XY Graph可以接受的数据类型图6-11(a)的程序是最基本的XY Graph编程方法。XY Graph描绘一条曲线需要两个数组,一个数组包含横坐标x的数据,另一个数组包含纵坐标y的数据。两个数组攒成一个簇,x数组在上,y数组在下。在这个程序中调用了AnalyzeSignal ProcessingSignal Generation函数子模板中的Sine Pattern VI,产生一个周期的正弦曲线数据;再将它的初相位参数phase设置90,产生一个周期的余弦曲线数据。显然当x坐标为正弦曲线,y坐标为余弦曲线时,将画出一个圆。图6-11(b)的程序是图6-11(a)的一个变形。
27、这里用了一个For循环结构,因为它被设置为运行360次,所以它的循环数i由0增加到359。将这些数转换为02值,再用Numeric Trigonometric函数子模板中的Sine & Cosine 函数分别求出这些数的正弦值和余弦值。每求出一对数值就攒成一个簇,最后通过For循环结构将这360个簇做成一个数组连接到 XY Graph的节点上,画出一个圆。图6-11(c)的程序只是将图6-11(a)的程序中产生曲线数据的部分进行了复制,使它产生两条曲线。这两条曲线的两个簇数据,被做成一个数组连接到XY Graph的节点上,画出两个圆。为了能够加以区分,将下面一个圆的半径扩大了一倍。这是通过设置
28、Sine Pattern VI的幅值参数amplitude 实现的。图6-11(d)的程序按图6-11(b )的程序中的方法画两个圆,并将下面一个圆的半径扩大了一倍。需要注意的是这里把两个数组都用Bundle函数转换为簇,再将这两个簇做成一个数组连接到XY Graph的节点上,画出两个圆。6.5 强度图 本节介绍的强度图指Intensity Chart 和Intensity Graph 这两种图形显示件。前面介绍的Waveform Chart、Waveform Graph 和XY Graph 都是用于描绘二维数据的,当需要显示三维数据时,例如平面上各点温度值的分布,就需要用到强度图。强度图的显
29、示区域分为一个个单元,每个单元的位置对应二维数组的一个索引值,而每个单元的颜色表示一个数组成员的数值。图6-12 Intensity Chart程序前面板及图形代码6.5.1 Intensity Chart 图6-12是应用Intensity Chart 显示三维数据的一个例子。图6-12(a)是程序的前面板,上面放了一个5行4列的数组控件,下面是Intensity Chart,在它的数据显示区显示了4行5列单元格。图6-12(b)是图形代码。从图中可以看出,二维数组的索引初始值对应数据显示区的左下角;数组每一行对应数据显示的一列,而数组每一列对应数据显示的一行。要改变这种行列对应关系,在In
30、tensity Chart上弹出菜单,选中transpose Array选项即可。图中二维数组数值索引值为(0,0)、(1,1)、(2,2)、(3,3)的一条斜线上的数组成员输入数据50,它们在Intensity Chart上显示为4个黄色的单元格。类似的还有代表数据100的3个红色单元格和代表数据250的3个蓝色单元格。数组成员索引值与显示位置的对应关系是固定的;但是代表每个数据值的颜色却是可以任意设定的。设置数据颜色的方法是在表示Intensity Chart 的Z 坐标的颜色斜度条上弹出菜单,在刻线间隔选项Marker Spacing 下选择任意间隔Arbitrary。然后可以在颜色斜度
31、条上弹出菜单选择添加刻线Add Marker ,在刻线数值上弹出菜单选择Marker Color,在弹出的颜色对话框中选择表示该数值所用的颜色。在程序中应用属性节点也可以设置表示数值所用的颜色。分别设置Z坐标的3个属性:Marker Values、High Color、Low Color即可。Intensity Chart可以表示256个离散的颜色值。但是用Intensity Chart显示大量数据需要很多内存。6.5.2 Intensity Graph Intensity Graph与Intensity Chart在许多方面都是相同的,最主要的区别是数据显示的方式。Intensity Chart显示数据使用缓存区,新的数据到达时,原有数据向左移动,新数据描绘在原有数据右边。显示区域占满后,最老的数据移出显示区。默认的缓存区存储128个数据点。而Intensity Graph显示数据则是新的数据到达时全部刷新原有的显示。Intensity Graph与其它Graph也有很多共同的特点,例如设置游标等。Intensity Graph与Intensity Chart的异同完全可以对照Waveform Graph与Waveform Chart 的异同。6.6 数字波形
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1