解說影片: 輕輕鬆鬆學 gnuplot
在作業中常需繪製圖表以更清楚的說明及展現實驗結果,gnuplot 就是一個好用的工具,以下會說明一些寫 gnuplot script 的相關技巧
gnuplot script 副檔名為 .gp
繪圖︰$ gnuplot -p [script 檔名]
檢視圖片︰$ eog [圖檔名]
設定
還有更多設定可以自由變換組合,下面提供較為常見的設定
#
: 註解行reset
: 重新設定set term png enhanced font 'Verdana,10'
: 設定圖片類型set output 'runtime.png'
: 存檔名稱set logscale {x,y}
: 設定 X 或 Y 軸或是兩者為 logscaleset xrange [a:b]
: 設定 X 軸範圍從 a 到 b (Y 軸亦可);若是看不到圖形,可用 set autoscale 自動調回set xlabel "XXX", a,b
: 設定 X 軸的名稱為 XXX (Y 軸亦同), 從預設向右移動 a,向上移動 bset xlabel "XX" font "Times-Italic,26"
: 設定X軸的名稱為 XX,以 Times-Italic 字型大小 26set title "GGG"
: 設定圖形標題為 GGGset xtics a
: 設定顯示的 X 軸座標與刻度, 每次增加 a ;在 logscale 時,預設的設定會沒有小刻度set xtics a,b
: 設定顯示的 X 軸座標與刻度 起始值 a,每次增加 bset format y "10^{%L}"
:Y 軸的值以 10 的 L 次方顯示set format x "%a.bf"
: X 軸的值以總長 a 位數,小數點以下 b 位顯示set format x "%a.be"
: 以科學記號顯示set format x ""
: 不顯示X軸的座標值set key Q,W Left reverse
: 將圖例與曲線標題倒過來放在圖上座標 (Q,W) 處set key spacing D
: 設定圖例間的寬度增加 D 倍set key title "XXX"
: 設定圖例的名稱set label "SSS" at Q,W
: 設定 SSS 這三個字出現在座標(Q,W)處set label "XX" textcolor lt 2
: 以linetype 2 顯示 XXset grid
: 在各主要刻度畫出格子繪製
plot
後面就緊接著一連串繪圖命令,gnuplot 會依照程式碼的順序繪圖,因此沒設定好會有覆蓋的情形。
讓我們以 phonebook 作業中的 runtime.gp
為例說明
output.txt
:
runtime.gp
:
''
: 因使用同一個 output.txt
檔,所以可以簡寫(亦等同於 'output.txt'
)The sequential order of each point within a data set.
The counter starts at 0 and is reset by two sequential blank
records. The shorthand form $0 is available.
+
or -
的值皆為位移量$2 $3..
: 就是第二個 columm,第三個 column 以此類推gnuplot 繪製同一來源檔案時命令應為不中斷的一大長串,我們可以使用\
連接各行排版,提高可讀性
若要處理自行準備的腳本檔案 (即 .gp
檔),輸入以下命令,
即可產生圖片。
輸出以下的 runtime.png
:
對應的程式碼
上面的例子中,如果你不知道
是什麼意思,你可以在 gnuplot 中打 help plot
仔細閱讀,會發現那是 range, 並且他告訴你可以再查詢,你可以直接打 range
查詢,也可以再回到 gnuplot 後打 help plot range
查詢。你就會了解那是 x 軸和 y 軸的意思,省略代表使用之前的設定
另外,如果你不知道 using 2:xtic(1)
是什麼意思,你也可以打 help using xtic
請善用 help, 從第一手資訊學習,例如:
help labels
延伸閱讀: how to label each point in the plot with its coordinates?
善用設定就能得整齊美圖一張
對應程式碼:
分佈圖
對應的程式碼
資料來源: 台北地區各氣象站月平均降雨量統計表
準備 gnuplot 的腳本:
參考輸出畫面: