第7章 图形化显示数据 ——图表和图形
引子 LabVIEW很大的一个优势就是它提供了丰富的数据图形化显示控件,而且使用起来极其方便。
本章内容 7.1 波形数据(Waveform) 7.2 Chart趋势图 7.3 Graph图表 7.4 三维图形(3D Graph) 7.5 Picture图形控件
7.1 波形数据(Waveform) 7.1.1 波形数据控件 为了方便地显示波形,LabVIEW专门预定义了波形数据类型。它实际上就是按照一定格式预定义的簇,在信号采集,处理和分析过程中经常会用到它。
7.1 波形数据(Waveform) 波形数据控件携带的数据包含了时间波形的基本信息,因此可以直接作为Chart和Graph的输入。横坐标代表时间,纵坐标代表Y值
7.1 波形数据(Waveform) 7.1.2 波形数据操作函数 虽然波形数据是一种预定义格式的簇,但是必须用专用的波形数据操作函数才能对它进行操作,其中某些操作函数与簇的操作函数非常类似。 波形数据的操作函数位于Functions Palette的Programming->Waveform…子模板下
7.1 波形数据(Waveform) 波形数据操作函数举例
7.2 Chart趋势图 Chart可以将新测得的数据添加到曲线的尾端,从而反映实时数据的变化趋势,它主要用来显示实时曲线。
7.2 Chart趋势图 7.2.1 波形趋势图(Waveform Chart) 对于标量数据,Chart图表直接将数据添加在曲线的尾端。
7.2 Chart趋势图 对于一维数组数据,它会一次性把一维数组的数据添加在曲线末端,即曲线每次向前推进的点数为数组数据的点数。
7.2 Chart趋势图 若要显示多条标量曲线,只需要用簇的Bundle函数将它们绑定在一起作为输入即可。
7.2 Chart趋势图 对于二维数组,缺省情况下是每一列的数据当作一条一维数组曲线。
7.2 Chart趋势图 技巧: 若想将曲线截图,可以通过右击曲线选择Data Operations->Copy Data将曲线图复制到剪切板上。
7.2 Chart趋势图 7.2.2 定制Chart显示样式 分栏显示多条曲线。 右击Chart选择Stack Plots
7.2 Chart趋势图 7.2.2 定制Chart显示样式 设置更新模式 右击Chart选择Advanced->Update Mode…可以设置曲线的更新模式。 Strip Chart模式:曲线填满显示区后曲线通过左移来更新曲线。 Scope Chart模式:曲线填满显示区后直接清空显示区重新开始从左向右增长曲线 在Sweep Chart模式:通过一条指示红线从左向右刷新数据
7.2 Chart趋势图 7.2.3 带时间轴的实时曲线
7.3 Graph图表 Graph和Chart的区别在于Graph是一次性将现有数据绘图,在绘图之前先自动清空图表,而不会将新数据添加到曲线的尾端。 根据显示方法,Graph又分为波形图、XY曲线图、强度图、数字时序图和三维图。
7.3 Graph图表 7.3.1 定制Graph属性
7.3 Graph图表 右击Graph控件可以看到该控件有很多属性可以设置。选择Visible Items…可以看到关于该控件的很多辅助选项。选择这些选项可以使它们都可见,如下图所示。
7.3 Graph图表——Waveform Graph Waveform Graph可以有多种数据输入类型:一维数组,二维数组,簇,簇数组,波形数据。它在Controls Palette中的位置为Modern->Graph->Waveform Graph。
7.3 Graph图表——Waveform Graph 1、一维数组作为输入 当输入数据为一维数组时,Waveform Graph直接将一维数组画成一条曲线,纵坐标为数组元素的值,横坐标为数组索引。
7.3 Graph图表——Waveform Graph 2、二维数组作为输入 当输入数组为二维数组时,缺省情况下每一行的数据对应一条曲线,即曲线的数目和行数相同。
7.3 Graph图表——Waveform Graph 3、簇作为输入 簇作为输入时需要指定三个元素:起始位置x0、数据点间隔dx和数组数据。
7.3 Graph图表——Waveform Graph 4、簇数组作为输入 一维簇数组也可以直接作为Graph的输入,此时相当于x0为0,dx为1
7.3 Graph图表——Waveform Graph 5、波形数据作为输入 由于波形数据所携带的数据横轴为时间,因此需要将Waveform Graph的横轴设为时间轴。
7.3 Graph图表——XY Graph 7.3.3 XY Graph 当我们需要画的曲线是由(x, y)坐标决定的时候,我们就需要采用XY Graph。 其实Waveform Graph在一定意义上也是XY Graph,但是它的X轴必须是等间距的,而且不可控制。
7.3 Graph图表——XY Graph 1、XY两个一维数组绑定为簇作为输入 这是最简的一种情形,Bundle函数的输入的第一个数组为X Array,第二个数组为Y Array。绑定为簇后可以直接输入,也可以将多个簇Build为一维数组输入实现多条曲线。
7.3 Graph图表——XY Graph 2、坐标点簇数组作为输入 该方式将各个点的坐标绑定为簇然后作为簇数组输入,和直接将XY数组绑定为簇输入效果一样。但是后者不一定需要XY数组的大小一致,它会自动将大的数组裁剪。
7.3 Graph图表——XY Graph 3、时间作为X轴——利用XY Graph实现历史曲线
7.3 Graph图表——XY Graph 4、Express XY Graph Express XY Graph采用了LabVIEW的Express技术,将Express XY Graph放置在前面板上的同时,在程序框图中会自动添加一个VI,它的XY轴数据为动态数据类型。
7.3 Graph图表 7.3.4 亮度图(Intensity Graph & Chart)
7.3 Graph图表 7.3.5 数字波形图(Digital Waveform Graph)
7.4 三维图形(3D Graph) 1、三维曲面图(3D Surface Graph) 将该控件放置在前面板上的同时,在背面板也会同时出现一个ActiveX控件和一个VI函数3D Surface.vi。
7.4 三维图形(3D Graph) 2、三维参量曲面图(3D Parametric Graph) 它需要3个轴的数据均为二维数组,分别决定了相对于x平面、y平面和z平面的曲面。
7.4 三维图形(3D Graph) 3、三维曲线图(3D Curve Graph)
7.5 Picture图形控件 向Picture控件导入图片
7.5 Picture图形控件 利用Picture控件画图
小试身手 1. 请说出Chart、Waveform Graph、XY Graph之间的主要区别。
小试身手 2. 利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,利用实时趋势曲线实时显示采样结果。
小试身手 3. 在习题2的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V。
小试身手 4.利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,共采集50个点,采集完后一次性显示在Waveform Graph上。
小试身手 5. 在习题4的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V,采样间隔是50ms,共采100个点。采样完成后,将两路采样信号显示在同一个Waveform Graph中。
小试身手 6. 将习题5中的X轴改为时间轴显示,要求时间轴能真实的反映采样时间。分析为什么与习题5的显示结果截然不同?
小试身手 7. 利用Signal Processing->Signal Generation->Sine Pattern.vi(如右上图所示)产生两条正弦曲线,将两条曲线分别作为XY Graph的XY输入。通过改变其中一条曲线的频率和相位来研究李萨如图形。