第6章 数据的图形显示.docx
- 文档编号:7061423
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:19
- 大小:872.05KB
第6章 数据的图形显示.docx
《第6章 数据的图形显示.docx》由会员分享,可在线阅读,更多相关《第6章 数据的图形显示.docx(19页珍藏版)》请在冰豆网上搜索。
第6章数据的图形显示
第6章 数据的图形显示
6.1LabVIEW的图形显示件
6.2WaveformChart
6.2.1WaveformChart的组件及其功能
6.2.2WaveformChart的设置
6.3WaveformGraph
6.3.1WaveformGraph的组件及其功能
6.3.2WaveformGraph的设置
6.3.3WaveformGraph的数据类型
6.4XYGraph
6.5强度图
6.5.1IntensityChart
6.5.2IntensityGraph
6.6数字波形图
6.7三维图形显示
6.7.1三维表面图3DSurfaceGraph
6.7.2三维参数图3DParametricGraph
6.7.3三维曲线图3DCurveGraph
6.8图片显示
第6章 数据的图形显示
用图形的形式显示测试数据与分析结果,可以看出被测试对象的变化趋势,使虚拟仪器的前面板变得更加形象直观。
LabVIEW提供了多种图形显示件,学会使用图形显示件,要了解它们的选项、所要求的数据类型和显示数据的方式。
图6-1LabVIEW的图形显示件子模板
6.1LabVIEW的图形显示件
图6-1是LabVIEW图形显示件Graph子模板,这些图形显示件分别是。
①图线WaveformChart
②图形WaveformGraph
③XY图形XYGraph
④强度图线IntensityChart
⑤强度图形IntensityGraph
⑥数字图形DigitalWaveformGraph
⑦三维表面图3DSurfaceGraph
⑧三维参数图3DParametricGraph
⑨三维曲线图3DCurveGraph
⑩图片子模板Ctls
以上10个图标中,第3行的⑦、⑧、⑨三个是用于三维图形的ActiveX控件容器;⑩是一个子模板图标,包含一些图片显示控件。
最常用的前6个显示件主要分为Chart和Graph两类。
Chart和Graph很难从中文释义上来区分,即使这两个词的英文原意也不容易体现出它们在LabVIEW中的差别。
简单的讲,它们最根本的差别就是描绘数据的方式不同,Chart是一个点、一个点的描绘数据,而Graph是一块、一块的描绘数据,因此它们所要求的数据类型也就有所不同。
在分别介绍这些显示件时不难看出它们的差别。
6.2WaveformChart
6.2.1WaveformChart的组件及其功能
图6-2是一个显示了全部组件的WaveformChart。
在WaveformChart上击右键弹出菜单,选VisibleItems可以确定这些组件显示或不显示。
以下是这些组件的功能。
图6-2WaveformChart的组件
①标签Label
一个对象被引用时总是通过标签与它联系的。
②标题Caption
标题通常可以被标签代替,除非需要在前面板上显示与对象被引用时不同的名称。
③纵坐标刻度Yscale
默认的纵坐标标签是Amplitude,可以用标签工具改为汉字。
纵坐标刻度和横坐标刻度都可以设置为固定值或自动比例。
转换的方法是在Chart上击右键弹出菜单,选XScale或YScale,然后在下一级菜单上再选AutoScaleX或AutoScaleY。
如果是在刻度值或坐标标签上弹出菜单则可以直接选AutoScaleX或AutoScaleY。
刻度为固定值时,可以用操作工具或标签工具修改坐标初始值和终值;刻度为自动比例时LabVIEW使图线纵坐标等于显示数据的最大幅值,横坐标适应显示全部数据。
但是使用自动比例会降低程序执行的效率。
要改变坐标刻度区域的面积大小,需要使用定位工具拖动图线描绘区的任意一角,改变它的面积大小,从而使坐标刻度区域的面积改变。
不能通过改变整个Chart的大小来改变坐标刻度区域的大小。
④图线描绘区
默认情况下的图线描绘区不显示栅格。
如果需要显示栅格,在Chart上击右键弹出菜单,选XScale或YScale,然后在下一级菜单上再选Formatting...。
如果是在刻度值上弹出菜单则可以直接选Formatting...。
弹出图6-3的YScaleFormatting对话框后,在GridOptions选框中点击左边一个图标,可以选择不显示栅格、显示主栅格或显示子栅格。
右边两个图标分别用于选择主栅格及子栅格的颜色。
这个格式对话框可以在SelectScale选框中选择是设置纵坐标格式还是设置横坐标格式。
还可以看到,其它能够设置的选项有:
ScaleStyle—刻线与刻线值的样式。
MappingMode—刻度值分布模式是线性坐标或对数坐标。
ScalingFactors—坐标初值与坐标间隔。
Format—坐标的数据格式。
LabVIEW默认的横坐标数据格式是表示数据点序号的整型数,如果设置为时间格式Time&Date则这个整型数被转换为时间格式,并可以对时间格式做进一步设置。
DigitsofPrecision—坐标刻度数据的记数方法与精度。
图6-3坐标格式设置
⑤刻度图例Scalelegend
刻度图例中绘有一个锁的图形的图标是刻度锁定钮,按一下变为锁住的样子就说明锁定在自动比例状态,它右边相邻的图标中亮起一个小绿灯;再按一下图标变为开锁的样子,说明刻度又变到固定值状态。
在刻度图例最右边一个图标上击鼠标左键,弹出一个菜单可以在程序运行状态下修改刻度的格式,包括坐标刻度数据的记数方法与精度,刻度值分布模式,刻度值与刻度标签的可见性,栅格颜色等。
⑥绘图图例Plotlegend
显示Chart中图线的样式,以利于区分每条线的意义。
如果一个Chart中显示多条图线,可以用定位工具拖动绘图图例模板的任意一角使它扩大,从而表达更多图线的图例。
绘图图例模板中的文字可以用标签工具修改,例如一个Chart中有3条图线,可以把它们分别标记为温度、压力、流量。
在绘图图例中每个图线上击右键弹出菜单,可以对这条图线的绘图方式、图线颜色、线型、线宽等做各种设置。
⑦数字显示Digitaldisplay
显示图线最新一点数据的幅值。
⑧横坐标刻度Xscale
默认的横坐标标签是Time,其余参看前面纵坐标刻度一段。
⑨图形操作模板Graphpalette
图形模板中有3个图标按钮。
按下最右边一个按钮,变为滚动模式,可以用鼠标拖动图线显示区,显示出图线窗口以外的内容。
最左边一个和最右边一个互相切换。
中间一个是放大按钮,按下这个按钮,出现图6-4的下一级模板。
图6-4图形操作模板
Ⅰ.将一个矩形区域放大。
Ⅱ.将两条纵线之间的区域放大。
Ⅲ.将两条横线之间的区域放大。
Ⅳ.取消最后一次放大,恢复上一步设置。
Ⅴ.以一个点为中心放大。
Ⅵ.以一个点为中心缩小。
⑩滚动条Scrollbar
水平移动图线,显示窗口以外的数据。
6.2.2WaveformChart的设置
1.存储数据长度
WaveformChart显示数据的方式是周期性的刷新显示区,并将数据存储在一块缓存区中。
这个缓存区的大小默认值是1024个数据。
如果需要改变这个值就在Chart上弹出菜单,选ChartHistoryLength,在弹出的对话框中修改图线历史长度。
当Chart的横坐标值小于ChartHistoryLength值时,用滚动条就可以显示缓存区中窗口以外的数据。
当选择横坐标为自动比例时,滚动条消失,说明数据已经全部显示了。
2.刷新模式
Chart有三种模式:
条幅式StripChart、示波器式ScopeChart和扫描式SweetChart。
缺省的刷新模式是条幅式。
要改变显示模式时,在弹出菜单中选Advanced>>UpdateMode,在弹出的下一级模板中选择需要的刷新模式。
条幅式类似于纸带记录仪的滚动显示模式,每接收到一个新的数据,就显示在图线的右边缘,原有的值左移。
示波器式显示模式是每接收到一个新数据,就把它描绘在上一个最新数据的右侧。
当图线画至右边界时,就擦除这段图线,再从左边界开始描绘一条新的图线。
示波器式显示模式明显快于条幅式,因为它无需处理滚动过程所需的时间开销。
扫描式与示波器式类似,不同的是数据到达右边界时,不将显示区清空,而是用一条垂直线界定新数据的起点,此线随新数据的到达在显示区内横移。
图6-5是
LabVIEW6.1\Examples\General\Graphs\Charts.llb库中Charts.Vi示例程序前面板的一部分,分别显示了三种刷新模式。
(a)StripChart(b)ScopeChart(c)SweepChart
图6-5Chart刷新模式
3.Chart的多图线布置方式
在一个Chart中显示多条图线时,可以使用同一个图线描绘区,叫做层叠描绘OverlayPlots;或使用不同的图线描绘区,叫做堆积描绘StackPlots。
图6-6是图6-5程序前面板的另一部分,分别显示了两种布置方式。
(a)OverlaidPlots(b)StackedPlots
图6-6Chart的多图线布置方式
在Chart上弹出菜单选OverlayPlots或StackPlots可以进行两种布置方式的转换。
在同一个图线描绘区显示多条图线时,也还可以选择单比例和多比例坐标刻度。
图6-7的程序在一个Chart中显示了一个幅值为1的正弦波和一个幅值为5的方波,由于使用了不同的坐标刻度比例,两者都充满了显示区域。
建立多比例坐标刻度的方法是在坐标刻度值或坐标刻度标签上弹出菜单选DuplicateScale。
图6-7多比例坐标刻线的Chart
6.2.2WaveformChart的数据类型
图6-8显示了WaveformChart可以接受的各种数据类型。
图6-8Chart可以接受的数据类型
图6-8(a)的程序给Chart连接了单个数值,这个数值是数值函数子模板Numeric中的RandomNumber函数,每调用一次它产生一个0~1的随机数。
这个程序每执行一次Chart就绘出一点,多次运行绘出一条线。
图6-8(b)的程序为了更快刷新图线的显示,用了一个For循环结构,把它的计数端口N设置为1024,这样它就运行1024次,产生1024个数据;使用For循环结构的索引数组的功能,将这些数据做成一个数组传递给Chart。
这些数据一次绘出一条线。
图6-8(c)的程序需要在Chart上描绘两条线,于是把两个数据用一个Bundle函数攒成一个簇,连接到Chart节点上。
这个程序每执行一次,Chart就在两条线上各绘出一点,多次运行绘出两条线。
图6-8(d)的程序为了更快刷新图线的显示,用了一个For循环结构把1024个簇数据做成一个簇数组传递给Chart,它用这些数据一次绘出两条线。
图6-8(e)的程序调用了Analyze>>SignalProcessing>>SignalGeneration函数子模板中的SineWave和SquareWave两个VI,产生两个数组的数据,再将它们合成一个二维数组连接到Chart节点上,一次绘出两条曲线。
需要说明的是,当一个Chart连接了一个二维数组,它是用这个数组的每一行数据描绘一条曲线。
但是在默认情况下它认为输入的数组每一列包含一条曲线的数据,所以将连接的二维数组转置,即行列交换。
而在这个例子里的二维数组本来就是每行包含一条曲线的数据,如果被变为两列数据,就不能正确显示在Chart上。
所以还需要在Chart上弹出菜单,将transposeArray选项去掉。
图6-8(f)的程序调用了Waveform>>WaveformGeneration函数子模板中的SineWaveformVI,产生一个波形数据连接到Chart节点上,Chart根据波形数据绘制出一条曲线。
图6-8(g)的程序调用了Waveform>>WaveformGeneration函数子模板中的SineWaveformVI和SquareWaveformVI,产生两个波形的数据,再将它们合成一个波形数组连接到Chart节点上,一次绘出两条曲线。
不难想到,这个波形数组有几个波形数据就会画出几条曲线。
6.3WaveformGraph
6.3.1WaveformGraph的组件及其功能
WaveformGraph的组件及其功能大部分与Waveform Chart是相似或相同的,关于这些内容本节不再重复,请读者参看6.2节。
这里主要介绍两点两者的不同之处:
WaveformGraph没有数字显示Digitaldisplay,但是它提供了游标工具。
利用Graph上两条游标刻线交点上的游标坐标值,能够准确的读出图线上任何一点的数据值。
设置游标要通过游标图例板。
在Graph上弹出菜单选VisibleItems>>CursorLegend,即可显示出游标图例板,如图6-9所示。
默认的游标图例板有两个游标,可以用定位工具拖动它的任意一角使它扩大或缩小,以显示需要的游标数目。
图6-9Graph的游标
游标图例板上各个元件的名称及功能为:
①游标名
如果需要把游标名显示在游标线上,可以在游标显示控制钮⑤上击鼠标左键,在弹出的菜单上选showname。
②游标X坐标值。
③游标Y坐标值。
如果是强度图,还有一项Z坐标值。
④移动控制钮。
按一下移动控制钮,它左上角的小绿灯点亮,这时可以用游标移动器⑦移动游标。
再按一下移动控制钮,它左上角的小绿灯熄灭,这时按游标移动器这个游标不会移动。
可以同时激活多个游标,允许游标移动器移动这些游标。
⑤游标显示控制
在游标显示控制钮上击鼠标左键弹出一个锁定控制菜单,可以设置游标的各种显示选项,包括游标的颜色、样式、游标点的样式、游标线的线型、线宽等。
⑥锁定控制钮
在锁定控制钮上击鼠标左键弹出一个菜单,菜单最上一个选项是AllowDrag,不选中这个选项则不允许用用户移动游标,程序运行后,锁定控制菜单上各选项也都不能用;如果选中这个选项,则无论程序是否运行,锁定控制菜单上可以设置以下各选项:
Free允许将游标移动到图线显示平面上任何点;
SnaptoPoint游标锁定在任意一条线的某个点上;
LocktoPlot游标锁定在某一条线上。
选择下面的图线选项可以在锁定状态下将游标直接移动到某一条图线上。
⑦游标移动器
可以用鼠标点击它的4个三角,上下左右移动活动的游标。
6.3.2WaveformGraph的设置
WaveformGraph在同一个图线描绘区显示多条图线时,也可以选择单比例和多比例坐标刻度。
设置的方法与WaveformChart是相同的。
WaveformChart的其它设置对于WaveformGraph都无须考虑。
6.3.3WaveformGraph的数据类型
图6-10(a)的程序调用了Analyze>>SignalProcessing>>SignalGeneration函数子模板中的SineWaveVI,产生一个数组的数据连接到graph的节点上,程序每执行一次绘出一条曲线。
SineWaveVI在默认情况下一次产生128个数据点。
所以曲线长为128个横坐标点。
Graph在默认情况下显示数据是从0开始每一点显示一个数据,如果需要改变坐标的设置可以像图6-10(b)的程序那样,用一个Bundle函数将x0、dx值和描绘曲线的数据y数组攒成一个簇,再连接到Graph的节点上。
由于这里dx值设为2,所以运行程序后可以看到,描绘同样的128个数据点。
但是曲线长为256个横坐标点。
图6-10(c)的程序调用了Analyze>>SignalProcessing>>SignalGeneration函数子模板中的SineWave和SquareWave两个VI,产生两个数组的数据,再将它们合成一个二维数组连接到Graph节点上,一次绘出两条曲线。
Graph连接二维数组时也是将这个数组的每一行数据描绘一条曲线。
但是它在默认情况下并不将连接的二维数组转置。
由于这里连接的二维数组本身就是每行包含一条曲线的数据,所以也不需要改变transposeArray选项
图6-10(d)的程序给图6-10(c)的程序设置了x0和dx值。
它给Graph连接的数据是一个簇,其中包括x0、dx和一个二维数组。
这种情况适用于多信道用同样采样率采样的情况。
图6-10(e)的程序相当于将两个图6-10(b)的簇做成一个簇数组。
这里为两条曲线分别设置了x0和dx值。
这种情况适用于多信道用不同采样率采样的情况。
图6-10(f)的程序调用了Waveform>>WaveformGeneration函数子模板中的SineWaveform和SquareWaveform两个VI,产生两个波形的数据,将它们合成一个波形数组连接到Chart节点上,一次绘出两条曲线。
当然也可以给Graph连接单个的波形VI,一次绘出一条曲线。
图6-10(g)的程序给Graph节点连接了一个描绘曲线数组。
描绘曲线数组由一些簇组成,每个簇包含一条曲线的数据,即一个一维数组。
为什么需要用描绘曲线数组而不是二维数组呢?
因为在程序中SineWaveformVI的samples参数赋值为128,即一次产生128个数据点;而SquareWaveformVI的samples参数赋值为256,即一次产生256个数据点。
当各条曲线数据点数不同,例如多信道采样各信道采样数不同时,就应该用描绘曲线数组这种数据结构。
因为做二维数组时LabVIEW会自动将短的一维数组后面补0,可能使数据的实际意义不清楚。
图6-10(h)的程序只是给图6-10(g)的程序设置了x0和dx值。
它给Graph节点连接的数据是一个簇,其中包括x0、dx和一个描绘曲线数组。
图6-10Graph可以接受的数据类型
从图6-10可以看出其中(a)、(c)、(f)和图中没有表示出来的连接一个波形数据的情况与Chart的数据类型都是一样的。
6.4XYGraph
WaveformGraph和Waveform Chart的横坐标都是单调均匀的,这样它们就不能描绘出非均匀采样的数据和某些平面曲线,因此LabVIEW提供了XYGraph这种图形显示件。
图6-11XYGraph可以接受的数据类型
图6-11(a)的程序是最基本的XYGraph编程方法。
XYGraph描绘一条曲线需要两个数组,一个数组包含横坐标x的数据,另一个数组包含纵坐标y的数据。
两个数组攒成一个簇,x数组在上,y数组在下。
在这个程序中调用了Analyze>>SignalProcessing>>SignalGeneration函数子模板中的SinePatternVI,产生一个周期的正弦曲线数据;再将它的初相位参数phase设置90,产生一个周期的余弦曲线数据。
显然当x坐标为正弦曲线,y坐标为余弦曲线时,将画出一个圆。
图6-11(b)的程序是图6-11(a)的一个变形。
这里用了一个For循环结构,因为它被设置为运行360次,所以它的循环数i由0增加到359。
将这些数转换为0~2π值,再用Numeric>>Trigonometric函数子模板中的Sine&Cosine函数分别求出这些数的正弦值和余弦值。
每求出一对数值就攒成一个簇,最后通过For循环结构将这360个簇做成一个数组连接到XYGraph的节点上,画出一个圆。
图6-11(c)的程序只是将图6-11(a)的程序中产生曲线数据的部分进行了复制,使它产生两条曲线。
这两条曲线的两个簇数据,被做成一个数组连接到XYGraph的节点上,画出两个圆。
为了能够加以区分,将下面一个圆的半径扩大了一倍。
这是通过设置SinePatternVI的幅值参数amplitude实现的。
图6-11(d)的程序按图6-11(b)的程序中的方法画两个圆,并将下面一个圆的半径扩大了一倍。
需要注意的是这里把两个数组都用Bundle函数转换为簇,再将这两个簇做成一个数组连接到XYGraph的节点上,画出两个圆。
6.5强度图
本节介绍的强度图指IntensityChart和IntensityGraph这两种图形显示件。
前面介绍的WaveformChart、WaveformGraph和XYGraph都是用于描绘二维数据的,当需要显示三维数据时,例如平面上各点温度值的分布,就需要用到强度图。
强度图的显示区域分为一个个单元,每个单元的位置对应二维数组的一个索引值,而每个单元的颜色表示一个数组成员的数值。
图6-12IntensityChart程序前面板及图形代码
6.5.1IntensityChart
图6-12是应用IntensityChart显示三维数据的一个例子。
图6-12(a)是程序的前面板,上面放了一个5行4列的数组控件,下面是IntensityChart,在它的数据显示区显示了4行5列单元格。
图6-12(b)是图形代码。
从图中可以看出,二维数组的索引初始值对应数据显示区的左下角;数组每一行对应数据显示的一列,而数组每一列对应数据显示的一行。
要改变这种行列对应关系,在IntensityChart上弹出菜单,选中transposeArray选项即可。
图中二维数组数值索引值为(0,0)、(1,1)、(2,2)、(3,3)的一条斜线上的数组成员输入数据50,它们在IntensityChart上显示为4个黄色的单元格。
类似的还有代表数据100的3个红色单元格和代表数据250的3个蓝色单元格。
数组成员索引值与显示位置的对应关系是固定的;但是代表每个数据值的颜色却是可以任意设定的。
设置数据颜色的方法是在表示IntensityChart的Z坐标的颜色斜度条上弹出菜单,在刻线间隔选项MarkerSpacing下选择任意间隔Arbitrary。
然后可以在颜色斜度条上弹出菜单选择添加刻线AddMarker,在刻线数值上弹出菜单选择MarkerColor,在弹出的颜色对话框中选择表示该数值所用的颜色。
在程序中应用属性节点也可以设置表示数值所用的颜色。
分别设置Z坐标的3个属性:
MarkerValues、HighColor、LowColor即可。
IntensityChart可以表示256个离散的颜色值。
但是用IntensityChart显示大量数据需要很多内存。
6.5.2IntensityGraph
IntensityGraph与IntensityChart在许多方面都是相同的,最主要的区别是数据显示的方式。
IntensityChart显示数据使用缓存区,新的数据到达时,原有数据向左移动,新数据描绘在原有数据右边。
显示区域占满后,最老的数据移出显示区。
默认的缓存区存储128个数据点。
而IntensityGraph显示数据则是新的数据到达时全部刷新原有的显示。
IntensityGraph与其它Graph也有很多共同的特点,例如设置游标等。
IntensityGraph与IntensityChart的异同完全可以对照WaveformGraph与WaveformChart的异同。
6.6数字波形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 数据的图形显示 数据 图形 显示