gnuplot詳細操作
https://www.cnblogs.com/waterystone/p/5085801.html
一. 簡介
gnuplot是一個命令列驅動的科學繪圖工具,可將數學函式或數值資料以平面圖或立體圖的形式畫在不同種類終端機或繪圖輸出裝置上。gnuplot既支援命令列互動模式,也支援指令碼。
二. 特性
三. 安裝
1. Win
準備的軟體:gp466-win64.zip
綠色版,直接解壓,開啟bin/wgnuplot.exe即可。
輸入quit或q或exit退出.
四. 基礎篇
4.1 plot
plot sin(x) title ‘y=sin(x)’ with [linespoints|boxes] [linetype 5] [linewidth 2] [pointtype 5] [pointsize 2]
命令 | 縮寫 | 意義 |
with | w | with子句指定樣式 |
line | l | 用線畫 |
point | p | 用點畫 |
linespoints | lp | 用線和點畫。通常在對資料繪圖時非常有用,它在涉及的每個示例或資料點處標記一個點,並使用線性插值法連線連續的點 |
linetype | lt | 線的樣式 |
linewidth | lw | 線的寬度 |
pointtype | pt | 點的樣式 |
pointsize | ps | 點的大小 |
gnuplot> plot sin(x) with line linetype 3 linewidth 2 %用線畫,線的型別(包括顏色與虛線的型別)是3,線的寬度是2,對函式sin(x)作圖
gnuplot> plot sin(x) w l lt 3 lw 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中的第二和第三列作圖,每列用空格分開
4.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 %兩條曲線是用逗號隔開的。
4.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的位置處
4.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 %去掉上邊x的刻度
gnuplot> unset x2tics %去掉上邊x的標度
gnuplot> set ytics nomirror %去掉右邊y的刻度
gnuplot> unset y2tics %去掉右邊y的標度
4.5. 在圖中插入文字
gnuplot> set label 'sin(x)' at 0.5,0.5 %在座標(0.5,0.5)處加入字串’sin(x)’。
4.6 X軸時間
gnuplot> set xdata time %X軸設定為時間格式
gnuplot> set timefmt "%Y-%m-%d" %檔案中時間格式
gnuplot> set format x "%m/%d" %目標時間格式
gnuplot> plot "d:/data.txt" u 1:2 w lp %畫圖
gnuplot> plot "d:/data.txt" u 1:2 w lp lt 2 pt 3,"d:/data.txt" u 1:3 w lp lt 2 pt 3 %多圖
gnuplot> plot "d:/data.txt" u 1:2 w lp lt 1 pt 1 title "total","d:/data.txt" u 1:3 w lp lt 2 pt 2 title "p21","d:/data.txt" u 1:5 w lp lt 3 pt 3 title "p22","d:/data.txt" u 1:7 w lp lt 4 pt 4 title "p3"
4.7 在圖中新增直線和箭頭
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
將去掉第二個箭頭。
4.8 圖的大小和位置
gnuplot>set size 0.5,0.5 %長寬均為預設寬度的一半,建議用這個取值,尤其是畫成ps或eps圖形的時候
gnuplot>set origin 0.0,0.5 %設定圖的最左下角的那一點在圖形面板中的位置。這裡圖將出現在左上角。
4.9. 畫三維圖
gnuplot>splot ‘檔名’ u 2:4:5 %以第二和第四列作為x和y座標,第五列為z座標。
4.10 將圖形輸出到檔案
在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
五.提高篇
5.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
5.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’
5.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設定座標軸名稱的顏色
5.4 如何插入希臘字母和特殊符號
一般只能在ps和eps圖中,且必須指定enhanced選項。在X11終端(即顯示器)中無法顯示。
gnuplot> set terminal postscript enhanced
然後希臘字母就可以通過{/Symbol a}輸入。例如
gnuplot> set label ‘{/Symbol a}’
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
各種希臘字母與特殊符號的輸入方法請見安裝包中gnuplot-4.0.0/docs/psdoc目錄下的ps_guide.ps檔案。
另外還可參見:
http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.3
5.5 畫等高線圖
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再變化一週,作為下一資料塊,等等。塊與塊之間用一空行格開。
5.6 如何畫漂亮的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 %重畫,注意看變化,主要是過渡更光滑
5.7 利用指令碼檔案避免重複輸入
有時候對某個資料檔案做好一張圖後,下次可能還要利用這個資料檔案作圖,但某個或某些設定要作些細微變化。這時候,可以把第一次作圖時的命令全部寫到一個檔案裡,如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’