2007年9月11日 星期二

好用的繪圖工具及gnuplot簡易教學

相信許多物理教師在編講義或出考卷時,遇到最麻煩的問題就是畫圖了。以下幾個軟體是我試用過之後覺得蠻好用的:
  1. gnuplot
  2. inkscape
  3. OpenOffice: draw
  4. QCad
這幾個軟體不論是在Linux還是Windows上都可以運作,其中前三個軟體是freeware,而QCad則是要註冊的( USD 33 ~ NT 1094)。gnuplot主要是用來畫函數圖形,inkscape是類似corle-draw的向量繪圖軟體,OpenOffice是一套相當有名的辦公軟體,而QCad則是類似Auto-Cad的繪圖軟體。在這邊我先介紹gnuplot。

gnuplot在Windows的介面如下圖(取自gnuplot homepage)




我在FC5下則是直接用文字介面



可以直接在文字介面中執行
$ gnuplot
進入gnuplot,然後在裡面直接打指令畫圖。但也可以執行
$ gnuplot [command file]
直接執行寫在command file中的指令。我個人是比較偏好第二種方法。
以底下這張圖為例:


我的指令檔如下

set xrange [0:2*pi]
set yrange [-1.1:1.1]
set title "x-t plot"
set xlabel "t (sec)"
set ylabel "x (m)"
# 顯示x軸
set xzeroaxis
# 不顯示圖例
set key off
# 加上三條直線
set arrow 1 from pi/2,1.05 to pi/2,-1.05 nohead ls 3
set arrow 2 from pi,1.05 to pi,-1.05 nohead ls 3
set arrow 3 from 3*pi/2,1.05 to 3*pi/2,-1.05 nohead ls 3
# 加上標籤
set label 1 "1" at pi/4,0.1 center font "Times,24" textcolor ls 2
set label 2 "2" at 3*pi/4,0.1 center font "Times,24" textcolor ls 2
set label 3 "3" at 5*pi/4,0.1 center font "Times,24" textcolor ls 2
set label 4 "4" at 7*pi/4,0.1 center font "Times,24" textcolor ls 2
# 設定輸出為svg檔
set terminal svg
# 設定輸出檔名
set output "x-t_sin.svg"
# 畫sin(x),0 < x < 2*pi
plot [0:2*pi] sin(x)


可以設定的輸出格式還有很多種,像是png, jpeg, gif, postscript等等。詳細的設定請參考gnuplot裡的help

5 則留言:

  1. octave 可以處理數值資料. 功能還不少. 類似matalab

    版主回覆:(05/03/2008 05:46:05 PM)


    謝謝您的迴響,我有空的時候會再來研究看看這個軟體。
    另外好奇地問一下,您是如何找到這來的?

    回覆刪除
  2. 我是在Google上搜寻用Draw绘制的图片时,鼠标点着点着就点到您的blog上来了,一看,挺好的,就尝试着发封E_mail联系您了。因为软件只有应用背景的人才能用得更好啊!

    版主回覆:(09/13/2007 01:57:29 AM)


    Google果然是個神通廣大的東西

    回覆刪除
  3. 您好,这几天你们是休息天吗?

    版主回覆:(11/15/2007 06:44:57 AM)


    我現在星期六、日有放假

    回覆刪除
  4. 如何用gnuplot畫長條圖?

    版主回覆:(11/16/2007 06:21:53 PM)


    假設您的資料檔名為data,內容如下
    ===========================================
    0 10
    2 15
    3 21
    5 13
    8 23
    ===========================================
    用以下指令應該可以得到您想要的效果
    plot "data" with boxes

    詳細資料可參閱 http://phi.sinica.edu.tw/aspac/reports/94/94002/plot-5.html#style

    回覆刪除
  5. 請問如何畫出一個像地球儀的圓呢?

    版主回覆:(05/17/2009 09:27:24 AM)


    如果是指畫圓的話,可以參考這個網頁 http://phi.sinica.edu.tw/aspac/reports/94/94002/plot-806.html
    我用以下這個檔案為例子,假設檔名為 circle.gnuplot,於終端機中執行
    gnuplot circle.gnuplot
    檔案內容如下
    ==============================================
    # 恢復為預設值
    reset
    # 設定為極座標
    set polar
    # 將圖形長、寬比例設為1:1
    set size square
    # 加上網格
    set grid
    # 設定輸出格式為svg檔
    set terminal svg
    # 設定輸出檔名為circle.svg
    set output "circle.svg"
    # 畫一個半徑為2的圓
    plot 2

    回覆刪除