gnuplot使用的一些技巧


一、基礎篇:

GNUPLOT是用於顯示數學函數和數據圖形的自由軟件

1、plot命令

基本命令:
plot {<ranges>}
     {<function> | {"<datafile>" {datafile-modifiers}}}
     {axes <axes>} {<title-spec>} {with <style>}
     {, {definitions,} <function> ...}
可以在gnuplot中輸入help plot查看幫助,子選項中比較常用的with,可以在gnuplot中輸入help plot with查看幫助
with <style> {{linestyle | ls <line_style>} | 
{{linetype  | lt <line_type>}
{linewidth | lw <line_width>}
              {linecolor | lc <colorspec>}
              {pointtype | pt <point_type>}
              {pointsize | ps <point_size>}
              {fill | fs <fillstyle>}
              {nohidden3d | nocontours}
              {palette}}
}
 其中<style> 可以是以下這些類型中的一種{ `lines`, `points`, `linespoints`, `impulses`,
 `dots`, `steps`, `fsteps`, `histeps`, `errorbars`, `labels`, `xerrorbars`,
 `yerrorbars`, `xyerrorbars`, `errorlines`, `xerrorlines`, `yerrorlines`,
 `xyerrorlines`, `boxes`, `histograms`, `filledcurves`, `boxerrorbars`,
 `boxxyerrorbars`, `financebars`, `candlesticks`, `vectors`, `image`,
 `rgbimage` , `pm3d`}.
以下是一些例子
gnuplot> plot sin(x) with line linetype 3 linewidth 2 或
gnuplot> plot sin(x) w l lt 3 lw 2    %用線畫,線的類型(包括顏色與虛線的類型)是3,線的寬度是2,對函數sin(x)作圖
gnuplot> plot sin(x) with point pointtype 3 pointsize 2  或
gnuplot> plot sin(x) w p pt 3 ps 2    %用點畫,點的類型(包括顏色與點的類型)是3,點的大小是2
gnuplot> plot sin(x) title 'f(x)' w lp lt 3 lw 2 pt 3 ps 2    %同時用點和線畫,這裏title ‘f(x)’表示圖例上標'f(x)',如果不用則用默認選項
gnuplot> plot sin(x)    %此時所有選項均用默認值。如果缺某一項則將用默認值
gnuplot> plot ‘a.dat’ u 2:3  w l lt 3 lw 2 %利用數據文件a.dat中的第二和第三列作圖
順便提一下,如這裏最前面的兩個例子所示,在gnuplot中,如果某兩個詞,按字母先後順序,前面某幾個字母相同,後面的不同,那麼只要寫到第一個不同的字母就可以了。如with,由於沒有其它以w開頭的詞,因此可以用 w 代替,line也可以用 l 代替。

2、同時畫多條曲線

gnuplot> plot sin(x) title ‘sin(x)’ w l lt 1 lw 2, cos(x) title ‘cos(x)’  w l lt 2 lw 2  %兩條曲線是用逗號隔開的。畫多條曲線時,各曲線間均用逗號隔開就可以了。
以上例子中是對函數作圖,如果對數據文件作圖,將函數名稱換爲數據文件名即可,但要用單引號引起來。

3、關於圖例的位置

默認位置在右上方。
gnuplot> set key left  %放在左邊,有left 和right兩個選項
gnuplot> set key bottom  %放在下邊,只有這一個選項;默認在上邊
gnuplot> set key outside  %放在外邊,但只能在右面的外邊
以上三個選項可以進行組合。如:
gnuplot> set key left bottom  %表示左下邊
還可以直接用座標精確表示圖例的位置,如

gnuplot> set key 0.5,0.6  %將圖例放在0.5,0.6的位置處

如果要取消圖例可以用unset key 命令

4、關於座標軸

gnuplot> set xlabel ‘x’   %x軸標爲‘x’
gnuplot> set ylabel ‘y’   %y軸標爲’y’
gnuplot> set ylabel ‘DOS’ tc lt 3  %其中的tc lt 3表示’DOS’的顏色用第三種顏色。
gnuplot> set xtics 1.0    %x軸的主刻度的寬度爲1.0,同樣可以爲y軸定義ytics
gnuplot> set mxtics 3    %x軸上每個主刻度中畫3個分刻度,同樣可以爲y軸定義mytics
gnuplot> set border 3 lt 3 lw 2 %設爲第三種邊界,顏色類型爲3,線寬爲2
同樣可以爲上邊的x軸(稱爲x2)和右邊y(稱爲y2)軸進行設置,即x2tics,mx2tics,y2tics,my2tics。
gnuplot> set xtics nomirror
gnuplot> unset x2tics     %以上兩條命令去掉上邊x2軸的刻度
gnuplot> set ytics nomirror
gnuplot> unset y2tics     %以上兩條命令去掉右邊y軸的刻度

5、在圖中插入文字

gnuplot> set label ‘sin(x)’ at 0.5,0.5  %在座標(0.5,0.5)處加入字符串’sin(x)’。
在輸出爲.ps或.eps文件時,如果在set term 的語句中加入了enhanced選現,則可以插入上下標、希臘字母和特殊符號。上下標的插入和latex中的方法是一樣的。
如果要在圖中每個點上都添加標籤,可以
gnuplot>plot 'file.dat' using 1:2:3 with labels %其中1,2列分別表示橫座標和總座標值,第三列作爲標籤添加到每個點上,當然第三列必須時雙引號擴起來的字符串,比如
1,2,"1"
3,4,"2"
....
如果第三列是數字,可以用stringcolumn(3)轉換
gnuplot>plot 'file.dat' using 1:2:(stringcolumn(3)) with labels
若既想把點畫出來,又想在點上添加標籤,目前我的做法時分別畫,因爲with後面labels和<type>不能兼容,這個沒有Matlab好,即
gnuplot>plot ‘file.dat’ using 1:2 with points ps 3,plot 'file.dat' using 1:2:3 with labels

6、在圖中添加直線和箭頭

gnuplot> set arrow from 0.0,0.0 to 0.6,0.8    %從(0.0,0.0)到(0.6,0.8)畫一個箭頭
gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 lt 3 lw 2   %這個箭頭顏色類型爲3,線寬類型爲2
gnuplot> set arrow from 0.0,0.0 to 0.6,0.8 nohead lt 3 lw 2  %利用nohead可以去掉箭頭的頭部,這就是添加直線的方法。
注意,在gnuplot中,對於插入多個的label和arrow等等,系統會默認按先後順序分別對各個label或arrow進行編號,從1開始。如果以後要去掉某個label或arrow,那麼只要用unset命令將相應的去掉即可。如:
gnuplot> unset arrow 2
將去掉第二個箭頭。

7、圖的大小和位置

gnuplot>set size 0.5,0.5  %長寬均爲默認寬度的一半,建議用這個取值,尤其是畫成ps或eps圖形的時候
gnuplot>set origin 0.0,0.5   %設定圖的最左下角的那一點在圖形面板中的位置。這裏圖將出現在左上角。

8、畫三維圖

gnuplot>splot ‘文件名’ u 2:4:5  %以第二和第四列作爲x和y座標,第五列爲z座標。

9.將圖形輸出到文件

在gnuplot中,輸出文件的格式是由terminal來控制的。默認的情況下,都是輸出到屏幕,即終端模式爲X11。如果想輸出到文件,則必須對terminal進行設置。要了解有那些終端類型,可以輸入 set terminal後回車,所有支持的終端模式(或文件格式)都列出來了。就我來說,輸出文件的格式用得最多的是ps和eps文件。這在運行畫圖命令
plot或splot前必須先運行如下兩條命令:
gnuplot>set term post eps color solid enh
gnuplot>set output ‘a.eps’
其中第一條命令爲設置終端模式,post即爲postscript模式,這是輸出到ps或eps文件必須有的。後面的eps,color,solid以及enh選項均可以有或沒有,根據你的需要。eps表示輸出爲eps文件,沒有就輸出爲ps文件;color表示輸出圖形爲彩色,不用就會保存爲黑白的;solid表示輸出圖中的所有線都用實線,不用則除了第一條線爲實線外,其它的均用不同的虛線;使用enh(enhanced)選項可以在圖中插入上下標、希臘字母和特殊符號,不用則不能實現這些功能。後面的選項可以根據自己的需要選擇一個或幾個。第二條命令對output的設置表示要輸出的文件的名字。但是請注意,運行完這條命令後,還僅僅是定義了輸出文件的名字,實際上,圖還沒畫到這個文件裏去。因此運行這兩條命令還只是進行了必須的設置。然後運行如下命令
gnuplot>plot sin(x) w l

gnuplot>replot(假如前面已經運行過plot或replot命令的話)
這時,圖形就在上面指定的文件中了。
要輸出爲其它格式,同樣要進行這樣的設置,比如要輸出爲jpg格式,則在運行畫圖命令前先運行如下命令:
gnuplot>set term jpeg
gnuplot>set output ‘a.jpg’
如果要由其它模式再返回到輸出到屏幕,則運行如下命令:
gnuplot>set term X11

二、提高篇:

1、如何在同一張圖裏同時畫多個圖

gnuplot>set multiplot   %設置爲多圖模式
gnuplot>set origin 0.0,0.5   %設置第一個圖的原點的位置
gnuplot>set size 0.5,0.5  %設置第一個圖的大小
gnuplot>plot “a1.dat”
gnuplot>set origin 0.5,0.5   %設置第二個圖的原點的位置
gnuplot>set size 0.5,0.5   %設置第二個圖的大小
gnuplot>plot “a2.dat”
gnuplot>set origin 0.0,0.0   %設置第三個圖的原點的位置
gnuplot>set size 0.5,0.5  %設置第三個圖的大小
gnuplot>plot “a3.dat”
gnuplot>set origin 0.5,0.0   %設置第四個圖的原點的位置
gnuplot>set size 0.5,0.5  %設置第四個圖的大小
gnuplot>plot “a4.dat”
當然,如果後一個圖中的某個量的設置和前一個的相同,那麼後一箇中的這個量的設置可以省略。例如上面對第二、第三和第四個圖的大小的設置。前一個圖中對某個量的設置也會在後一個圖中起作用。如果要取消在後面圖中的作用,必須用如下命令,如取消label,用
gnuplot>unset label

2、作二維圖時,如何使兩邊座標軸的單位長度等長

gnuplot> set size square    %使圖形是方的
gnuplot> set size 0.5,0.5    %使圖形是你要的大小
gnuplot> set xrange[-a:a]
gnuplot> set yrange[-a:a]    %兩座標軸刻度範圍一樣
gnuplot> plot ‘a.dat’

3、如何在同一張圖裏利用左右兩邊的y軸分別畫圖

gnuplot> set xtics nomirror   %去掉上面座標軸x2的刻度
gnuplot> set ytics nomirror   %去掉右邊座標軸y2的刻度
gnuplot> set x2tics       %讓上面座標軸x2刻度自動產生
gnuplot> set y2tics     %讓右邊座標軸y2的刻度自動產生
gnuplot> plot sin(x),cos(x) axes x1y2    %cos(x)用x1y2座標,axes x1y2表示用x1y2座標軸
gnuplot> plot sin(x),cos(x) axes x2y2     %cos(x)用x2y2座標,axes x2y2表示用x2y2座標軸
gnuplot> set x2range[-20:20]   %設定x2座標的範圍
gnuplot> replot
gnuplot> set xrange[-5:5]  %設定x座標的範圍
gnuplot> replot
gnuplot> set xlabel 'x'
gnuplot> set x2label 't'
gnuplot> set ylabel 'y'
gnuplot> set y2label 's'
gnuplot> replot
gnuplot> set title 'The figure'
gnuplot> replot
gnuplot> set x2label 't' textcolor lt 3    %textcolor lt 3或tc lt 3設置座標軸名稱的顏色

4、如何插入希臘字母和特殊符號

一般只能在ps和eps圖中,且必須指定enhanced選項。在X11終端(即顯示器)中無法顯示。
gnuplot> set terminal postscript enhanced然後希臘字母就可以通過{/Symbol a}輸入。例如
gnuplot> set label ‘{/Symbol a}’
各種希臘字母與特殊符號的輸入方法請見安裝包中gnuplot-4.0.0/docs/psdoc目錄下的ps_guide.ps文件。
另外還可參見:
http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.3

5、gnuplot中如何插入Angstrom(埃)這個符號(A上面一個小圓圈)

腳本中在插入前先加入
gnuplot>set encoding iso_8859_1
這個命令,然後就可以通過“{\305}”加入了。如橫座標要標上“k(1/?)”:
gnuplot>set xlabel 'k(1/{\305})
如果是multiplot模式,則這個命令必須放在
gnuplot>set multiplot
的前面。
如果後面還要插入別的轉義字符,那麼還要在插入字符後加入如下命令:
set encoding default
安裝包中gnuplot-4.0.0/docs/psdoc/ps_guide.ps文件中的表中的‘E’代表那一列的所有符號都用這個方法輸入。

6、gnuplot畫等高線圖

gnuplot>splot  ‘文件名.dat’  u 1:2:3  w  l   %做三維圖
gnuplot>set dgrid3d 100,100 %設置三維圖表面的網格的數目
gnuplot>replot
gnuplot>set contour    %設置畫等高線
gnuplot>set cntrparam  levels  incremental -0.2,0.01,0.2   %設置等高線的疏密和範圍,數據從   -0.2到0.2中間每隔0.01畫一條線
gnuplot>unset surface   去掉上面的三維圖形
最後用鼠標拽動圖形,選擇合理的角度即可。或者直接設置(0,0)的視角也可以:
gnuplot>set view 0,0
gnuplot>replot
這裏注意,畫三維圖的數據文件必須是分塊的,也就是x每變換一個值,y在其變化範圍內變化一週,這樣作爲一塊,然後再取一個x值,y再變化一週,作爲下一數據塊,等等。塊與塊之間用一空行格開。

7、如何畫漂亮的pm3d圖

gnuplot> set pm3d                %設置pm3d模式
gnuplot> set isosamples 50,50       %設置網格點
gnuplot> splot x**2+y**2          %畫三維圖
gnuplot> splot x**2+y**2 w pm3d   %畫成pm3d模式,注意比較變化
gnuplot> set view 0,0              %設置視角,(0,0)將投影到底面上去
gnuplot> splot x**2+y**2 w pm3d   %重畫,注意看變化
gnuplot> unset ztics               %把z軸上的數字給去掉
gnuplot> set isosamples 200,200     %使網格變細
gnuplot> replot                   %重畫,注意看變化,主要是過渡更光滑

8、利用腳本文件避免重複輸入

有時候對某個數據文件做好一張圖後,下次可能還要利用這個數據文件作圖,但某個或某些設置要作些細微變化。這時候,可以把第一次作圖時的命令全部寫到一個文件裏,如a.plt,下次只要將相應的設置做修改後,用下面的命令就會自動運行文件所有的命令而最後得到你要的圖:
gnuplot>load ‘a.plt’
作爲一個例子,假設文件名爲a.plt,裏面的內容爲:
set pm3d 
set view 0,0 
unset ztics 
set isosamples 200,200 
splot x**2+y**2 w pm3d
set term post color
set output ‘a.ps’
replot
那麼啓動gnuplot後,只要運行如下命令就可以了:
gnuplot>load ‘a.plt’
如果我們要得到的僅僅是.ps或.eps圖,那也可以在linux命令提示符下直接運行如下命令:
[bill@bill~]$gnuplot a.plt

9、在gnuplot模式下運行linux命令

在gnuplot提示符下也可以運行linux命令,但必須在相應的命令前面加上 ! 號。例如,假設很多參量都已經設置好了,但需要對某個數據文件a.dat進行修改後再畫圖,則可以用如下方式
gnuplot>!vi a.dat
通過這種方式,所有的linux命令都可以在gnuplot環境裏運行。
另外,也可以在gnuplot的提示符後輸入shell,暫時性退出gnuplot,進入linux環境,做完要做的事情後,運行exit命令,又回到gnuplot環境下。
gnuplot>shell
[bill@bill~]$vi a.f
[bill@bill~]$f77 a.f
[bill@bill~]$a.out    (假設生成a.dat數據文件)
[bill@bill~]$exit
gnuplot>plot ‘a.dat’ w l 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章