gnuplot 数据文件_使用gnuplot在网页中显示数据

Gnuplot是用于生成趋势和图表的工具。 它通常用于基于时间序列的数据收集,但不仅限于此。 也可以使用静态数据。 Gnuplot可以批量运行或即时运行,结果由图形查看器或Web浏览器呈现。 本文演示了如何通过批处理文件使用gnuplot生成从sar和其他数据源收集的数据。 Gnuplot使用set运算符的命令选项非常丰富。 但是,要使用线或框生成基本图形,则需要掌握一些文档知识。

对于此演示,我将使用Web服务器来呈现图形。

Gnuplot概述

Gnuplot将原始表格数据转换为图形文件图像。 流行的格式是png,pdf和jpeg,然后可以即时显示它们,也可以直接显示在X终端,网页或常规图形查看器实用程序中。 该图像也可以导入文档中。 命令界面用于使用“ set”命令与gnuplot进行交互,以指定如何格式化和呈现图像。 通常,这包括图形的大小,要使用的颜色,比例,x,y坐标以及输出图像名称。 然后,使用gnuplot引擎使用plot命令实际生成图像。 还有一个splot命令将绘制3D图形图像。 尽管可以使用命令界面以交互方式执行命令,但是最好使用配置文件来完成,因为可以通过使用shell'here'文档方法在文件中使用变量(如果需要)来重用该文件。 然后,将配置文件通过gnuplot传递给生成映像文件。 如果配置文件中有任何错误,这些错误将在此过程中显示,并突出显示错误所在。 使用新生成的图形文件,然后可以显示图像。

与将用于生成图形的任何数据收集过程一样,在通过gnuplot进行管道传输之前,必须对收集的数据进行一些修补。 这种过滤很可能包括从数据文件中删除标题或尾部。 sed和awk是您满足任何文本过滤要求的朋友。

安装Gnuplot

可以从AIX®5L Source Packages网站以rpm的形式下载Gnuplot 4.2版,网址为: http : //www.perzl.org/aix/index.php

与gnuplot一样,您还将需要一个正在运行的http服务器以进行此演示。

也可以从此处或从AIX工具箱网站下载所需的从属库和http服务器。

在安装gnuplot之前,请确保已安装以下rpm库,因为这是必备条件:

fontconfig-2.7.2-1.aix5.1.ppc.rpm
expat-2.0.1-2.aix5.1.ppc.rpm 
freetype2-2.3.9-1.aix5.1.ppc.rpm
zlib-1.2.3-5.aix5.1.ppc.rpm 
libpng-1.2.40-1.aix5.1.ppc.rpm
gd-2.0.35-4.aix5.1.ppc.rpm
libjpeg-7-1.aix5.1.ppc.rpm
libXpm-3.5.7-2.aix5.1.ppc.rpm 
 gettext-0.17-1.aix5.1.ppc.rpm
glib2-2.20.5-1.aix5.1.ppc.rpm

要列出已安装的rpm,请使用:

# rpm –qa

最后,安装实际的gnuplot软件包:

# rpm -ivh gnuplot-4.2.4-1.aix5.1.ppc.rpm

运行gnuplot进行测试。 您将看到gnuplot interface命令( quit以退出该接口):

$ gnuplot
      G N U P L O T
        Version 4.2 patchlevel 4
        last modified Sep 2008
        System: 5.3
        Copyright (C) 1986 - 1993, 1998, 2004, 2007, 2008
        Thomas Williams, Colin Kelley and many others
        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from http://www.gnuplot.info/faq/
        Send bug reports and suggestions to <http://sourceforge.net/projects/gnu
plot>
Terminal type set to 'unknown'
gnuplot>

用sar创建图

sar可能是收集性能数据的最常见方法,因此让我们仅将其用作一个示例。 清单1,sarx.txt,包含从运行sar到每小时五个小时的过滤输出。

清单1. sarx.txt
14:10:50        33  27    4     36      4.00
15:10:50        29  14    3     28      4.00
16:10:50        35  21    1     31      4.00
17:10:49        38 29    2     39      4.00
18:10:40        42  29    3     35      4.00

接下来,创建一个文件以包含生成图形所需的所有gnuplot命令。 该文件可以称为任何您喜欢的文件。 在此演示中,我将其称为sarx.conf。

为了能够生成图像,必须通知gnuplot图形文件应采用什么格式以及应如何以视觉方式呈现。 清单2 sarx.conf包含用于发出设置操作的配置文件。 以#字符开头的任何行均被视为注释。 让我们更仔细地看清单2

set terminal png truecolor

首先设置终端类型,它通知gnuplot所生成的图像将被格式化成什么格式。 本文使用png(便携式网络图形)格式。

set output "sarimage.png"

接下来,通知gnuplot实际的输出图像文件名。 在这种情况下,将其称为sarimage.png。

set autoscale

生成图形时,需要为数据指定x和y轴范围。 该示例告诉gnuplot做出决定,然后让gnuplot计算范围值。 但是,这可以被覆盖,如稍后演示。

set xdata time
set timefmt "%H:%M:%S"

因为此示例使用日期值作为数据的参考点,所以我们将值的格式告知gnuplot。 在清单1的示例sarx.txt中,它的格式为:

Hour:Minute:Seconds

基于UNIX日期符号,请注意在date变量周围使用双引号。 其他常见格式为:

%d  - day of month 1 -31
%m - month of year 1 -12
%y  - year 0-99
%b  - three character of month name , ie: jan ,feb
%B  - name of month

如果我们有一个日期列,其格式为: Hour-Minute

然后,将以以下形式表示: set timefmt ″%H-%M″

set style data lines

显示图表时,绘制的数据应位于平滑的数据线上。 其他常见的绘图格式是:点,框,误差线,烛台。

plot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"

接下来,使用plot命令实际绘制或生成图形。 首先,给出数据输入文件名,然后通知gnuplot要绘制哪些列。 在此示例中,我们将使用列1作为x轴,然后绘制标题为“%user”的列2数据,然后绘制标题为“%sys”的列3。 标题或标签将显示在图形的右上方。 绘制时,第2列和第3列将使用第1列作为x值参考。 plot命令中的每个“ using”语句均以逗号分隔。 下一节将讨论两个单引号的用法。

要生成图像文件,格式为:

cat < conf file> | gnuplot

对于此演示,我将使用:

$ cat sarx.conf | gnuplot

现在将生成sarimage.png文件。 要查看图像,请将文件复制到Web服务器文件系统中的htdocs目录中以进行查看。

图1. sarimage使用提供的样本数据演示了在Web浏览器上的结果输出。

清单2. sarx.conf
#sarx.conf
set terminal png truecolor
set output "sarimage.png"
set autoscale
set xdata time
set timefmt "%H:%M:%S"
set style data lines
plot "sarx.txt" using 1:2 title "%user", '' using 1:3 title "%sys"
图1. sarimage
image

剧情介绍

可以在plot命令中使用命令行中的快捷方式。 例如,在初始plot命令之后,可以使用选项的首字母缩写对plot命令的其他任何选项。 但是,在本演示中,我将仅缩写输入文件,该输入文件使用两个单引号引起来,而不是再次提供输入文件(sarx1.txt)。 以下说明了这一解释。 第一个示例是我在本演示中使用的符号,第二个示例是缩写的符号,第三个示例给出了完整的命令语句,没有任何缩写。 这三个示例均产生相同的输出。

plot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"

plot "sarx1.txt" using 1:2 title "%user", '' u 1:3 t "%sys"

plot "sarx1.txt" using 1:2 title "%user",\
″sarx1.txt'' using 1:3 title "%sys"

在向其他用户显示图形时,有时为了方便识别主题,有时会加上文字标签和标题。 要包含x和y标签,请使用xlabel和ylabel命令,并用引号将文本括起来:

set ylabel " y line info here"
set xlabel " x line info here"

要包括图形的标题标题,请使用title命令:

set title "main title info here"

生成图形时,Gnuplot使用其自己的默认颜色。 默认情况下,生成的图形将在白色背景上显示。 这很有意义,因为图形可能会被打印出来。 但是,您可以使用十六进制范围中表示的颜色代码(以字母x为前缀)来更改任何颜色。 十六进制代码的格式为:

xrrggbb

Google搜索“十六进制颜色代码”会产生十六进制的所有颜色。

覆盖gnuplots默认颜色的颜色顺序为:

background
border 
X
Y
plotting lines

浅灰色(十六进制)等于: C9C9C9

要生成浅灰色背景的图形,我可以使用:

set terminal png  xC9C9C9

注意,在上面的命令中,我必须将truecolour选项替换为png类型的终端类型,该类型覆盖了gnuplot使用的默认颜色。 由于我没有指定其他颜色来覆盖默认设置,因此gnuplot将为图表的其余部分使用其自己的默认颜色。

在查看图形时,网格也可以作为参考点非常有用。 使用grid选项,以下内容将通知gnuplot在图形上插入网格:

set grid

您可以隐式设置x和y坐标; 但是,请确保不要指定小于数据传播范围的范围,否则将不会绘制任何图形。 使用清单1中包含的样本数据,您可以看到时间x坐标的范围是从14:10:50到18:10:40。

y坐标范围(第2列和第3列)从14到50。

使用该信息,您可以指定自己的范围。 本示例使用x范围从14:00到18:15,y范围从10到50。

set xrange ["14:00:00" : "18:15:00"]
set yrange ["10:00" : "50:00" ]

清单3中 ,将使用这些更改,结果图形输出包含在图2中

清单3. sarx2.conf
#sarx2.conf
set terminal png  xC9C9C9
set output "sarimage.png"
set autoscale
set xdata time
set timefmt "%H:%M:%S"
set ylabel "Performance"
set xlabel "Time"
set title "Sar Output Example"
set xrange ["14:00:00":"18:15:00"]
set yrange ["10:00" : "50:00" ]
set grid
set style data lines
plot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"
图2. sarimage2
sarimage2

直方图的Gnuplot

直方图或方框也可以用来表示数据,对于某些情况,它比使用静态数据更直观。 清单4表示包含从AIX应用程序框中获取的用户组总数的数据。 第一列包含实际的AIX组名,第二列包含总数。

清单4. grpdata.txt
staff   54
apps    22
sybgrp  12
db2grp1 29
dasdm   8
dstage 21
dsgrp  8
batch  28
db2prd 1

要使用直方图,只需通知gnuplot该图将使用直方图生成:

set style data histograms

生成的默认直方图的框上没有粗体边缘,并且所有框都不会填充颜色。 但是,如果指定边框,则该框的底部可能会沿x轴包含粗线的双击(从外观上看,这看起来并不正确。)。

Gnuplot按以下顺序绘制框的边界:顶部,底部,左侧和右侧,并分别具有以下值:1、2、4、8。要擦除一条或多条边界线,请提供这些值的总和。 在此示例中,底部边框线将被删除,因此可以使用-1选项删除。 指定填充选项将使用默认颜色填充框:

set style fill solid 1.00 border -1

对于x坐标,您不使用时间跨度,而是要使用组名。 使用xtic选项,这告诉gnuplot将tic和数据标签一起放在x轴上(第1列)。 在这种情况下,它是组名。 但是,有时会提供包含许多字符或确实是xtics时间格式的标签,而这恰恰不适合图上的tic之间。 您会在标签中发现重叠。 为避免这种情况,将标签旋转90度(适合实验),使其垂直。 您可以使用以下命令来实现:

set xtic rotate by 90

第二列中的数据将使用第一列(x数据)作为参考:

( 2:xtic (1)

生成图形时,为数据“应用程序组编号”赋予标题:

plot "grpdata.txt" using 2:xtic(1) title "apps group numbers"

要生成图像grpimage.png,请使用:

$ cat grphist.conf | gnuplot

清单5包含用于生成图像的gnuplot命令,该命令显示在下面的图3中。

清单5. grphist.conf
# grphist.conf
set terminal png truecolor
set output "grpimage.png"
set grid
set xtic rotate by 90
set style data histograms
set style fill solid 1.00 border -1
plot "grpdata.txt"  using 2:xtic(1) title "apps group numbers"
图3. grpimage
图像

当然,如sar示例所示,您可以在直方图中绘制一组以上的数据。 现在来看另一个数据源。 清单6包含反映三个月期间磁盘阵列上数据增长和减少的数据。 第一列是磁盘阵列名称,第二列是一个月的磁盘增长使用量,第三列是下个月的磁盘增长使用量,而下一个月的增长则包含在第四列中。

清单6. disk.txt
hdisk2 420 425 410
hdisk3 700 780 760
hdisk4 450 450 452
hdisk5 680 702 690
hdisk6 320 330 329
hdisk7 530 515 514

清单7包含用于生成数据的conf文件。 仔细查看plot命令,您再次使用xtic命令,因为您要为x轴数据覆盖gnuplot。 生成直方图时,第二,第三和第四列将x轴用作参考。 引用完后,第二列将使用x轴:

2:xtic(1)

Gnuplot假定要绘制的其余列也将引用该列,因此无需在plot命令中再次指定xtic:

plot "disk.txt"  using 2:xtic(1) title "Oct-09 data growth(gb)", '' using 3 title "N
ov-09 data growth(gb)", '' using 4 title "Dec-09 data growth(gb)"

要生成图像,请使用:

$ cat diskhist.conf | gnuplot

生成的图像显示在图4中

清单7. diskhist.conf
# diskhist.conf
set terminal png truecolor
set output "diskimage.png"
set grid
set style data histograms
set style fill solid 1.00 border -1
plot "disk.txt"  using 2:xtic(1) title "Oct-09 data growth(gb)", '' using 3 title "N
ov-09 data growth(gb)", '' using 4 title "Dec-09 data growth(gb)"
图4. diskimage
磁盘映像

结论

Gnuplot是一个可用于从不同类型的数据生成不同图形的工具。 要使用shell脚本自动执行图形生成过程,我建议使用“ here”文档方法,因为该过程可用于通过gnuplot快速生成图形。 要停止Web服务器缓存图形,请在脚本中使用适当HTML META标记(例如,“ no-cache”语句)。


翻译自: https://www.ibm.com/developerworks/aix/library/au-gnuplot/index.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值