Contents ...
udn網路城邦
TiKz plot指令畫數學圖形三,使用gnuplot工具。
2015/04/27 08:43
瀏覽1,324
迴響0
推薦3
引用0

如果熱悉gnuplot的人,那麼使用tikz用gnuplot畫數學圖形更是方便。如果以實用度來說,使用gnuplot來作圖更加實用。

要使用gnuplot,首先電腦要裝。以Mac來說,需要裝上程式開發套件,和x11環境,然後下載最新版的gnuplot原始碼,然後解壓縮後,用terminal進入該目錄,打上指令:

例如在gnuplot-5.0.0目錄下:

./configure

make

sudo make install

這三個命令就裝好了。

然後在TiKz中,使用

plot [id=anyword]function{gnuplot指令}就能畫圖了。記得在latex編譯的時候,要加上-shell-escape或是-enable-write18的參數(視tex版本,環境不同而定)。我是使用texlive,是用-shell-escape參數即可。例如

xelatex -shell-escape mygnuplot.tex

或是

pdflatex -shell-escape mygnuplot.tex

這樣子,在編譯到plot部分時,會自動用gnuplot執行運算,把gnuplot算好的結果(座標值)傳回到plot上面。

參數id

這一定要設定的,例如

\draw plot[id=sin, samples=30] function {sin(x)};

這樣在編譯時,gnuplot 會產生一個名稱帶有id指定名稱的table檔,這個table檔理面就是含有圖形的30個座標,然後plot會讀取這些座標,然後畫出來。gnuplot角度的單位預設是radian。

參數 prefix 

這是可以設定gnuplot產生的檔名前綴要用什麼,可以用它來作檔案管理,如設定到某個目錄。

參數 parametric

這個參數是用來畫 (x,y)=(f(t),g(t))的圖形, 變數一定要用t。如

\draw plot [parametric,id=lissajous, domain=0:2*pi, samples=100] function {sin(3*t), sin(4*t)};

參數range=start:end

xrange=start:end

yrange=start:end

這些可以設定(x,y)值的範圍,方便作圖,例如ten(x),就可以設定yrange=-3:3,那麼3,-3區間以外的值就不會採用,就不會有分母接近0時的運算問題。

\draw plot [id=tan, domain=-2*pi:2*pi, samples=100, smooth,yrange=-3:3] function{tan(x)};

參數 raw gnuplot

這個參數是完全使用gnuplot指令操作,具有最大的彈性, 不需要id以外的參數,例如,有一個實驗數據為test.dat:

1    2.5

2    4.3

3    5.1

4    8.4

從資料檔案讀資料畫出回歸直線:

\draw[help lines](0,0) grid (4,8);

\draw [red, dash] plot file{test.dat};

\draw plot [raw gnuplot, id=x] function{set xrange [0:4]; f(x)=m*x+b; fit f(x) 'test.dat' using 1:2 via m,b; plot f(x)};

這個例子,就是用gnuplot讀取test.dat的第一列和第二列數據作回歸直線的運算後,畫出x值在0到4時的回歸直線。

gnuplot的功能很強,如果熟悉,那麼使用gnuplot算出函數的數據後再用到TiKz中繪圖是在實際的應用上面非常的方便。

有誰推薦more

限會員,要發表迴響,請先登入