gnuplot畫圖一

來源:互聯網
上載者:User

gnuplot 是一個用於產生趨勢圖和其他圖形的工具。它通常用於收集基於時間的資料,但是不限於此;也可以使用待用資料。gnuplot 可以以批模式運行或動態運行,結果由圖形查看程式或 網頁瀏覽器顯示。本文示範如何使用 gnuplot 和批檔案為從 sar 或其他資料來源收集的資料產生圖形。gnuplot 有許多命令選項,可以通過 set 操作符使用它們。但是,要想使用線或框產生圖形,需要對文檔有所瞭解。

在本文中,我將使用 Web 服務器提供圖形。

gnuplot 概述

gnuplot 把原始表格式資料轉換為圖形檔案。流行的格式是 png、pdf 和 jpeg,然後可以把它們動態地或直接地傳遞給 X 終端、網頁或通用的圖形查看程式。還可以把映像匯入文件。使用命令介面與 gnuplot 互動,使用 “set” 命令指定映像的格式和顯示方式。這通常包括映像的大小、使用的顏色、刻度、x, y 座標和輸出映像名。然後,使用 plot 命令通過 gnuplot 引擎實際產生映像。還可以使用 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 toolbox 網站下載所需的依賴庫和 http 伺服器。

在安裝 gnuplot 之前,一定要安裝下面的 rpm 庫,因為 gnuplot 需要這些庫:

fontconfig-2.7.2-1.aix5.1.ppc.rpmexpat-2.0.1-2.aix5.1.ppc.rpm freetype2-2.3.9-1.aix5.1.ppc.rpmzlib-1.2.3-5.aix5.1.ppc.rpm libpng-1.2.40-1.aix5.1.ppc.rpmgd-2.0.35-4.aix5.1.ppc.rpmlibjpeg-7-1.aix5.1.ppc.rpmlibXpm-3.5.7-2.aix5.1.ppc.rpm  gettext-0.17-1.aix5.1.ppc.rpmglib2-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 命令介面(用 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/gnuplot>Terminal type set to 'unknown'gnuplot>

用 sar 建立圖形

sar 可能是最常用的收集效能資料的方法,所以我們以它作為樣本。清單 1(sarx.txt)是通過運行 sar 收集的資料,資料收集時間為 5 小時,每小時收集一次,輸出已經經過篩選。


清單 1. sarx.txt

    14:10:50        33  27    4     36      4.0015:10:50        29  14    3     28      4.0016:10:50        35  21    1     31      4.0017:10:49        38 29    2     39      4.0018:10:40        42  29    3     35      4.00

 

接下來,建立一個檔案以包含產生圖形所需的所有 gnuplot 命令。可以給這個檔案起任何名字;在本文中,我把它命名為 sarx.conf。

為了能夠產生映像,必須告訴 gnuplot 圖形檔案應該採用什麼格式以及應該如何顯示。清 單 2(sarx.conf)包含執行 set 操作的設定檔。以 # 字元開頭的行是注釋。我們仔細看看 清 單 2。

set terminal png truecolor

 

首先設定終端類型,這告訴 gnuplot 產生的映像應該採用什麼格式。本文使用 png (Portable Network Graphics) 格式。

set output "sarimage.png"

 

接下來,告訴 gnuplot 實際的輸出影像檔名。在這裡,檔案名稱為 sarimage.png。

set autoscale

 

在產生圖形時,需要指定資料的 x 和 y 軸範圍。這個樣本讓 gnuplot 自己計算範圍值。但是,可以修改這個選項(稍後示範)。

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

 

因為這個樣本使用日期值作為資料的參照點,需要告訴 gnuplot 日期資料的格式。在 清 單 1 sarx.txt 中,日期格式為:

Hour:Minute:Seconds

根據 UNIX 日期標記法,日期變數應該放在雙引號中。常用的其他格式包括:

%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

 

在顯示這個圖形時,繪製出的資料應該是一條平滑的資料線。常用的其他繪製格式包括:dots、boxes、errorbars、 candlesticks。

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

 

接下來,使用 plot 命令實際繪製或產生圖形。首先,指定資料輸入檔案名稱,然後告訴 gnuplot 要繪製哪些列。在這個樣本中,使用第 1 列作為 x 軸,繪製第 2 列資料,標題為 “%user”;然後繪製第 3 列,標題為 “%sys”。標題(即標籤)顯示在圖形的右上方。在繪製時,第 2 列和第 3 列使用第 1 列作為 x 值。plot 命令中的每個 ‘using’ 語句由逗號分隔。下一節討論為什麼要使用兩個單引號。

產生影像檔的命令格式為:

cat < conf file> | gnuplot

 

對於本文,我使用:

$ cat sarx.conf | gnuplot

 

現在會產生 sarimage.png 檔案。為了查看這個映像,把這個檔案複製到 Web 服務器檔案系統中的 htdocs 目錄中。

圖 1(sarimage)顯示使用提供的樣本資料在 網頁瀏覽器中看到的輸出。


清單 2. sarx.conf

    #sarx.confset terminal png truecolorset output "sarimage.png"set autoscaleset xdata timeset timefmt "%H:%M:%S"set style data linesplot "sarx.txt" using 1:2 title "%user", '' using 1:3 title "%sys"



圖 1. sarimage

繪圖 選項的表示

在 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 上搜尋 ‘hex color codes’ 可以找到十六進位的顏色編碼錶。

覆蓋 gnuplot 預設顏色的次序為:

backgroundborder XYplotting lines

 

淺灰色的十六進位表示為:C9C9C9。

可以使用以下命令產生淺灰色背景的圖形:

set terminal png  xC9C9C9

 

注意,在以上命令中必須替換終端類型 png 的 truecolor 選項,這會覆蓋 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.confset terminal png  xC9C9C9set output "sarimage.png"set autoscaleset xdata timeset 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 gridset style data linesplot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"



圖 2. sarimage2

gnuplot 和柱狀圖

還可以使用柱狀圖或框圖表示資料,有時候這比使用待用資料更合適。清單 4 是從一台 AIX 機器獲得的使用者組使用者總數。第 1 列包含 AIX 組名,第 2 列包含成員總數。


清單 4. grpdata.txt

    staff   54apps    22sybgrp  12db2grp1 29dasdm   8dstage 21dsgrp  8batch  28db2prd 1

 

要想使用柱狀圖,只需告訴 gnuplot 應該使用柱狀圖產生圖形:

set style data histograms

 

相關關鍵詞:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.