日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转载】使用 gnuplot 在网页中显示数据

發布時間:2024/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】使用 gnuplot 在网页中显示数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://www.ibm.com/developerworks/cn/aix/library/au-gnuplot/

簡介

gnuplot 是一個用于生成趨勢圖和其他圖形的工具。它通常用于收集基于時間的數據,但是不限于此;也可以使用靜態數據。gnuplot 可以以批模式運行或動態運行,結果由圖形查看程序或 Web 瀏覽器顯示。本文演示如何使用 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.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 命令界面(用 quit 命令退出界面):

$ gnuplotG N U P L O TVersion 4.2 patchlevel 4last modified Sep 2008System: 5.3Copyright (C) 1986 - 1993, 1998, 2004, 2007, 2008Thomas Williams, Colin Kelley and many othersType `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 收集的數據,數據收集時間為 5 小時,每小時收集一次,輸出已經經過篩選。

清單 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 命令??梢越o這個文件起任何名字;在本文中,我把它命名為 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 time set 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)顯示使用提供的示例數據在 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

繪圖選項的表示

在 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 默認顏色的次序為:

background border X Y plotting 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.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

gnuplot 和柱狀圖

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

清單 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 選項刪除底部邊框線。指定 fill 選項就會用默認顏色填充框:

set style fill solid 1.00 border -1

對 于 x 坐標,這里不使用時間,而是使用組名稱。使用 xtic 選項讓 gnuplot 沿著 x 軸放置 tic 和數據標簽(第 1 列)。在這里就是組名稱。但是,有時候標簽包含許多字符,或者 xtic 的時間格式在圖形上的 tic 之間放不下。這時就會看到標簽相互重疊。為了避免這個問題,把標簽旋轉 90 度(通過試驗找到合適的角度),讓它們垂直顯示。可以使用以下命令來實現這種效果:

set xtic rotate by 90

第 2 列中的數據使用第 1 列(x 數據)作為參照:

2:xtic (1)

在生成圖形時,給數據加上標題 “apps groups numbers”:

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 示例一樣在柱狀圖中繪制多組數據?,F在看看另一個數據源。清單 6 中的數據反映三個月內磁盤陣列中數據的增減。第 1 列是磁盤陣列名稱,第 2 列是第一個月的磁盤使用量,第 3 列是下一個月的磁盤使用量,最后一個月的數據在第 4 列中。

清單 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。在 plot 命令中,同樣使用 xtic 命令修改 x 軸數據的顯示方式。在生成柱狀圖時,第 2、3 和 4 列使用 x 軸作為參照點。因此指定第 2 列使用 x 軸作為參照:

2:xtic(1)

gnuplot 假設要繪制的其他列也參照 x 軸,所以在 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.cnblogs.com/helloWaston/p/4539202.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的【转载】使用 gnuplot 在网页中显示数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。