2017年12月6日 星期三

gnuplot

 一些設定說明:
  • set logscale {x,y}:設定X或Y軸或是兩者為logscale    取消:unset logscale
  • set xrange [a:b] 設定X軸範圍從a到b(Y軸亦可);若是看不到圖形,可用set autoscale 自動調回
  • set xlabel "XXX", a,b: 設定X軸的名稱為 XXX (Y軸亦同), 從預設向右移動a,向上移動b
  • set xlabel "XX" font "Times-Italic,26":設定X軸的名稱為XX,以Times-Italic字型大小26顯示
  • set xlabel "XX" font "Times-Roman,24":設定X軸的名稱為XX,以Times-Roman字型顯示
  • set xlabel "XX" textcolor lt 4: 以linetype 4 顯示XX
  • set title "GGG": 設定圖形標題為GGG
  • set xtics a: 設定顯示的X軸座標與刻度, 每次增加 a ;在logscale時,預設的設定會沒有小刻度
  • set xtics a,b: 設定顯示的X軸座標與刻度 起始值a,每次增加b
  • set mxtics a: 顯示X座標軸上的小刻度,每個大刻度間隔除以a的大小顯示一次
  • set xtics (a,b,c): 設定顯示的X軸座標a ,b ,c 與刻度(Y軸亦同)
  • set format y "10^{%L}":Y軸的值以10的L次方顯示
  • set format x "%a.bf": X軸的值以總長a位數,小數點以下b位顯示
  • set format x "%a.be":以科學記號顯示
  • set format x "%g":預設顯示
  • set format x "":不顯示X軸的座標值
  • set key Q,W Left reverse:將圖示與曲線標題倒過來放在圖上座標(Q,W)處,ex:  xy1 +++ ---> +++ xy1
  • set key spacing D:設定圖示間的寬度增加D倍
  • set key title "XXX":設定圖示的名稱
  • set label "SSS" at Q,W:設定SSS這三個字出現在座標(Q,W)處  (網頁上的demo有例子)
  • set label "XX" textcolor lt 2: 以linetype 2 顯示XX
  • set arrow from a,b to c,d:從座標(a,b)畫個箭頭到(c,d),編號第一條箭頭 (可用lw,ls改樣式)
  • set noarrow 1:除去第一號箭頭
  • set arrow from a,b to c,d nohead:畫沒箭頭的箭頭  (疑?那是啥?就是線啦)
  • set term postscript (eps) enhanced color:嵌入一些文字外掛並設定輸出為ps或eps 
               特殊文字的表示法可以在下載的gnuplot程式中找到教學文件或是見PS1        
  • set label "{/Symbol n}={/Italic l}" at Q,W font "Times-Roman,24"
  • set grid: 在各主要刻度畫出格子
  • set grid xtics ytics mxtics mytics:在各刻度畫出格子
  • set grid noxtics x2tics:以上邊的X軸刻度畫出格子(參考實例2)
  • load "FFF.txt": 載入FFF.txt 中的指令,這是相當好用的畫圖方法,畫錯了只要改檔案重畫就行
            PS: 檔案中若是有 # 符號   那這一列就不會被讀取
  • X@^2_{A} : 同時設定某一符號的上下標
  • set datafile missing "Nan": 不要讀(畫)出字串Nan
  • plot "data" u 1:(log($4)): 畫data檔案中的第1行為x,第4行取log值為y

    *  實例1:把兩張圖上下疊在一起
       以下為指令:
        set term post eps enh color 
        set out "test.ps"
        set multiplot                                      <--進入multiplot模式
        set key 0.5,1 Left reverse                 <--設定圖示座標為(0.5,1)並倒過來
        set key spacing 2
        #Figure 1                                          <--#之後不會被讀取  可以用來寫說明
        set xrange [-1:1]
        set yrange [-1:3]
        set xtics (-1,-0.75,-0.5,0.25,0,0.5,1)  <--設定要顯示的X軸座標
        set ytics (-1,-0.5,0,0.5,1,1.5,2,2.5)
        set tmar 0                  <--因為要把第二張圖貼在第一張上緣,所以上面邊界設為0,但是只有這樣作的話,下面那張會比小,因為下面那張的的座標部份也算在邊界界內,所以最好的方法是將所有的邊界都設為0

        set bmar 0                
        set rmar 0                   
        set lmar 0 
        set size 0.7, 0.5         <--設定圖的大小:X軸變為0.7倍  Y軸變0.5倍 (縮小比例可讓圖示標題看起來變大)
        set origin 0.1, 0.0   <--設定圖的原點 0.1,0 (不是圖上的座標而是整個圖的座標),若沒有引入eps功能 邊界可能會被切掉,所以原點稍微向右移
        set title "test1" 0,-4 font "Times-Roman,30" <--圖形標題為test1 由原來位置移動(0,-4)到新位置 (0,-4不是圖上座標,是相對原始位置的座標)
        set xla "{/Symbol F^a}" font "Times-Italic,25"  
        set yla "{/Symbol S}" font "Times-Roman,25"    <--設定一些符號並改變字型與大小
        plot "abc.txt" u 1:2 w lp ti "{/Symbol n_1}" pt 5   <--以abc.txt檔案中,第一行為X軸,第二行為Y軸<u 1:2>畫出來,並把資料的點標出來且連線<lp>,點的形式是第五種 <pt 5>,曲線的標題為{/Symbol n_1} <ti "{/Symbol n_1}">
        rep "abc.txt" u 1:3 w lp ti "{/Symbol b_2}" pt 7
        #Figure 2
        set size 0.7, 0.5                                   <--size 要跟第一張圖一樣才會和稱
        set origin 0.1, 0.5                                <--第二張的原點 因為要貼在第一張的上面  所以要跟第一張的設定配合
        set bmar 0                                           <--下緣邊界設為0
        set format x ""                                     <--X軸沒有座標顯示
        set ytics (-1,0,0.5,1,2,2.5,3)
        set xla ""                                              <--X軸沒有名稱
        set yla "{/Symbol S}" font "Times-Roman,25"
        set title "test2" 0,-4 font "Times-Roman,30"
        plot "abc.txt" u 1:2 w lp ti "{/Symbol n_1}" pt 6
        rep "abc.txt" usi 1:4 w lp ti "{/Symbol b_2_3}"  pt 8
        rep "abc.txt" w l lt 1 lc rgb "blue" lw 7  <-- linetype=1, linewidth=7,linecolor=blue(4.2版以後)
        set nomultiplot                                      <--離開multiplot模式

    *實例2:兩個不同Y值的座標軸在同一張圖(參考gnuplot-tips)
      <span style="color: #339966;">set xr [0:2*pi]       
      set yr [-1:1]            <span style="color: #000000;"><--左邊Y軸範圍</span>
      set y2range [0:1]           <span style="color: #000000;"><--右邊Y軸範圍</span>
      plot sin(x)    axis x1y1, \  
             sin(x)**2 axis x1y2 <span style="color: #000000;"> <--畫sin(x)以左邊Y軸當基準,畫sin(x)平方以右邊Y軸當基準</span></span>
      <span style="color: #339966;">set ytics nomirror</span>          <--設定左邊Y的刻度不要鏡射到右邊軸     <span style="color: #339966;"> 
      set y2tics 0, 0.2            <span style="color: #000000;"><--設定Y2的顯示值與刻度       </span></span>
    * 有關含Error bars的作圖
      http://t16web.lanl.gov/Kawano/gnuplot/datafile-e.html#2dim
      http://gnuplot.sourceforge.net/demo/mgr.html      上面兩個網頁有一些例子與說明
      The number of data column required for data plotting depend on a kind of figure, which is summarized below
Data FormatColumnusingwith
(X,Y) dataX Y1:2lines, points, steps, 
linespoints, boxes, etc.
Y has an error of dYX Y dY1:2:3yerrorbars
X has an error of dXX Y dX1:2:3xerrorbars
Y has an error of dY, and
X has an error of dX
X Y dX dY1:2:3:4xyerrorbars
Y has a range of [Y1,Y2]X Y Y1 Y21:2:3:4yerrorbars
X has a range of [X1,X2]X Y X1 X21:2:3:4xerrorbars
Y has a range of [Y1,Y2], and
X has a range of [X1,X2]
X Y X1 X2 Y1 Y21:2:3:4:5:6xyerrorbars
   例子:
      plot "abc.txt" usi 1:2:3:4 with yerrorbars              <---第三跟第四行是Y軸上面與下面的數據點值
      plot "abc.txt" usi 1:2:($2+$3):($2-$4) with error <---第三跟第四行是Y軸誤差的上下量          
                                                                                                    ps:  origin作圖只接受誤差量 
      plot "abc.txt" usi 1:2:3 with error                           <---Y軸只有一種誤差量 

    *  使用Gnuplot來fitting:
       http://www.duke.edu/~hpgavin/gnuplot.html
       參考上述網頁即可 以下是主要的指令
        f1(x) = a1*tanh(x/b1)            <--定義要用來fitting的函數與參數
       a1 = 300; b1 = 0.005;            <--猜的a1與b1初始值
        fit f1(x) 'force.dat' using 1:2 via a1, b1  <--fitting      
PS1:特殊符號表:
ALPHABETSYMBOLALPHABETSYMBOLalphabetsymbolalphabetsymbol
AAlphaNNuaalphannu
BBetaOOmicronbbetaoomicron
CChiPPicchippi
DDeltaQThetaddeltaqtheta
EEpsilonRRhoeepsilonrrho
FPhiSSigmafphissigma
GGammaTTauggammattau
HEtaUUpsilonhetauupsilon
IiotaWOmegaiiotawomega
KKappaXXikkappaxxi
LLambdaYPsillambdaypsi
MMuZZetammuzzeta
PS2:各種線與點的顏色跟大小  (下次再補)



gnuplot script

  • 設定
  • 還有更多設定可以自由變換組合,下面提供較為常見的設定
    • #: 註解行
    • reset: 重新設定
    • set term png enhanced font 'Verdana,10': 設定圖片類型
    • set output 'runtime.png': 存檔名稱
    • set logscale {x,y}: 設定 X 或 Y 軸或是兩者為 logscale
    • set xrange [a:b]: 設定 X 軸範圍從 a 到 b (Y 軸亦可);若是看不到圖形,可用 set autoscale 自動調回
    • set xlabel "XXX", a,b: 設定 X 軸的名稱為 XXX (Y 軸亦同), 從預設向右移動 a,向上移動 b
    • set xlabel "XX" font "Times-Italic,26": 設定X軸的名稱為 XX,以 Times-Italic 字型大小 26
    • set title "GGG": 設定圖形標題為 GGG
    • set xtics a: 設定顯示的 X 軸座標與刻度, 每次增加 a ;在 logscale 時,預設的設定會沒有小刻度
    • set xtics a,b: 設定顯示的 X 軸座標與刻度 起始值 a,每次增加 b
    • set 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 顯示 XX
    • set grid: 在各主要刻度畫出格子

沒有留言:

張貼留言

標籤