gnuplot 入門教程


 轉載自“https://so.csdn.net/so/search/s.do?q=gnuplot%20%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B&t=blog&u=liyuanbhu

現在在網上可以找的科學作圖軟件有不少,其中不乏優秀者,Win平台上有大名鼎鼎的OriginTecplotSigmaPlot等,類UNIX上有LabPlotgnuplot等。其他的常見的計算軟件如MatlabMathematicaMapleScilabIDLMaxima等也都對科學作圖有很好的支持,甚至於只要稍加努力使用MSExcel也可以做出不錯的圖來。但是筆者最喜愛的工具還是gnuplot。gnuplot 是典型的UNIX 哲學的產物,小巧,靈活,擅長於與其他工具協同工作。本人使用gnuplot 已經有1年有余,積累了些經驗,下面的內容主要是我1年多來使用gnuplot所做筆記的一個總結,當然,在成稿過程中也將gnuplot 的手冊又來回翻了幾遍。

 

gnuplot是一個命令行驅動的科學繪圖工具,可將數學函數或數值資料以平面圖或立體圖的形式畫在不同種類終端機或繪圖輸出裝置上。它是由Colin Kelley Thomas Williams1986年開發的繪圖程序發展而來的,可以在多個平台下使用。gnuplot既支持命令行交互模式,也支持腳本。

gnuplot 的主要作者包括:Thomas Williams, Colin Kelley, Russell Lang, Dave Kotz, John Campbell, Gershon Elber, Alexander Woo 和許多其他人。

gnuplot 與自由軟件基金會和GNU 項目沒有任何直接的關系,因此將 gnuplot 稱為 GNUplot 是不對的。gnuplot 是完全獨立的設計和開發的,命名為 gnuplot 只是種妥協,當時Thomas 希望他們開發的程序叫做 "llamaplot" Colin 更喜歡 "nplot" 這個名字。后來他們都同意命名他們的程序為 "newplot",可是很快他們發現有個Pascal 語言寫的程序叫這個名字,而且這個程序偶爾會被提到。最后 Thomas 想出了"gnuplot" 這個雙方都可以接受的名字。

gnuplot 在互聯網上的主頁地址是:www.gnuplot.info , 源代碼和可執行程序也可以到http://sourceforge.net/projects/gnuplot 上下載。

gnuplot有詳細的使用手冊,如果用戶使用的是GNU/Linux操作系統,可以察看 /usr/share/doc/gnuplot目錄下的gnuplot.html文件。需要PDF版本的使用手冊可以到http://sourceforge.net/projects/gnuplot 下載。

本文中所引用范例皆整理自 gnuplot demo。文中的圖例亦引用自子目錄 demo 中的范例。

 

快速入門

 

本文全文都以GNU/Linux 下的 gnuplot 4.0版本為例,如果讀者使用的是其他版本的操作系統,個別操作細節請做相應調整。

在命令行模式下輸入 gnuplot,即可看到如下的信息,其中省略號處省略了部分信息:

 

G N U P L O T
Version 4.0 patchlevel 0
last modified Thu Apr 15 14:44:22 CEST 2004
System: Linux 32 bit
……

Terminal type set to 'x11'
gnuplot>

 

‘gnuplot>’即是 gnuplot 的命令行提示符,gnuplot 的所有命令都在這個提示符下輸入。

2D 繪圖

請看例 1:

 

plot sin(x)

 

產生圖 2結果 ——以曲線繪出三角函數 sin(x)

 

圖 1 Plotting sin(x)

假設我們只想看到一個正弦曲線周期。我們通過限制圖的默認 x 范圍來完成此操作。使用表示法 [min:max] 來指定范圍。要僅指定最小值,使用 [min:];要僅指定最大值,使用 [:max]。數學上稱此為所謂的區間表示法。

例 2從 -pi +pi sin(x)cos(x)

 

set xrange [-pi:pi]
replot cos(x) with points pointtype 2

 

或者:

 

plot [-pi:pi] sin(x), cos(x) with points pointtype 2


 

 

我們剛才使用了 replot 命令,它執行先前的 plot 命令。當您繪制曲線圖且需要不斷對該圖進行修改以添加想要的特征時,此命令會非常有用。另外,replot 使您可以添加更多的圖。嘗試輸入 replot cos(x)。依照語法,該命令等同於 plot sin(x), cos(x)replot 就是獲取先前的繪圖字符串,添加必要的逗號,然后附加輸入給它的其余部分。

例 5 將數據文件中的數據畫出:

plot sin(x), ‘1.dat’

 

其中1.dat 為一數據文件,每一行描述一點坐標位置。 內容如下,其中 # 后面的內容為注釋:

# $Id: 1.dat,v 1.1.1.1 1998/04/15 19:16:40 lhecking Exp $
-20.000000 -3.041676
-19.000000 -3.036427
-18.000000 -3.030596
-17.000000 -3.024081
-16.000000 -3.016755
-15.000000 -3.008456
……


 

圖 2 Plotting sin(x), data file – 1.dat

例 6命名圖和坐標軸:

set title 'My first graph'
set xlabel 'Angle, in degrees'
set ylabel 'sin(angle)'
plot sin(x)


 

現在,我們注意到 x 軸實際沒有標記為度數,看起來不是很好。要修改此問題,可以通過調整 x 軸上的 tic 標記。

例 7 改變軸上 tic 並設置網格:

set title "My first graph"
set xrange [-pi:pi]  # we want only one cycle
set xtics ('0' 0, '90' pi/2, '-90' -pi/2, '45' pi/4,'-45' -pi/4,'135' 3*pi/4,'-135' -3*pi/4)
set grid
set xlabel 'Angle, in degrees'
set ylabel 'sin(angle)'
plot sin(x) 


 

gnuplot 還允許您指定繪圖的樣式,以便獲得進一步的控制。

例 8 多條曲線

plot sin(x) with linespoints pointtype 5, cos(x) w boxes lt 4

 

with 子句使您可以詳細而精確地指定線的樣式。在本例中,我們說明兩種有用的樣式。第一種樣式 linespoints 通常在對數據繪圖時非常有用,它在涉及的每個示例或數據點處標記一個點,並使用線性插值法連接連續的點。這里我們另外指定點類型為 5,它選擇終端允許的第五種點。第二種樣式 boxes 更適合繪制直方圖數據。注意我們如何在 cos(x) 曲線中將 with 縮寫成 w。類似地,lt linetype 的縮寫,是另一個特定於終端的設置,它選擇終端可以繪制的四種線。不必說,您可以使用 pt 代替冗長的 pointtype。如果想在多條線中使用相同的繪圖樣式(在一個 plot 命令中或在多個 plot 命令中),可以使用 set 命令設置繪圖樣式:set style function linespoints。要更改用於繪制與函數相對的數據集合的樣式,使用 set style data linespoints

當繪制兩條或多條曲線時,我們需要關鍵字或圖例來對它們進行區分。默認情況下,關鍵字在右上角;但是如果它妨礙了圖,可以將關鍵字放到其他位置 。如果願意,甚至可以放到圖外。

例 9 定制圖的關鍵字或圖例

set key top left
set key box
plot [-pi:pi] sin(x) title 'sinusoid' with linespoints pointtype 5, cos(x) t 'cosine' w boxes lt 4

上面,我們在同一圖中繪制了正弦和余弦曲線。gnuplot 使您還可以繪制多個圖,這樣它們可以並排顯示在同一輸出屏幕或文件中。在某些排版系統中,以一個文件的形式包含兩個圖形比分別包含兩個圖形要更容易。

例 10 Multiplot 示例:

set xrange [-pi:pi]
# gnuplot recommends setting the size and origin before going to multiplot mode
# This sets up bounding boxes and may be required on some terminals
set size 1,1
set origin 0,0

# Done interactively, this takes gnuplot into multiplot mode
set multiplot

# plot the first graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0,0.5
plot sin(x)

# plot the second graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0,0
plot 1/sin(x)

# plot the third graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0.5,0.5
plot cos(x)

# plot the fourth graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0.5,0
plot 1/cos(x)

# On some terminals, nothing gets plotted until this command is issued
unset multiplot
# remove all customization
reset




 

 

3D繪圖

例 11:

 

splot [-pi:pi] [-pi:pi] sin(x)*cos(y)

產生圖 2結果 --- 以縱橫各 10 條線組成的網格畫出 sin(x)*cos(y) 的圖形。

3 Plotting sin(x)*cos(y)

例 12 畫等高線圖:

set dgrid3d 100,100 #設置三維圖表面的網格的數目
set contour    #設置畫等高線
set cntrparam  levels  incremental -0.9,0.1,0.9   #設置等高線的疏密和范圍,數據從   -0.2到0.2中間每隔0.01畫一條線
unset surface  # 去掉上面的三維圖形
set view 0,0
unset key
splot [-pi:pi] [-pi:pi] sin(x)*cos(y)


例 13 畫pm3d

set pm3d
set isosamples 50,50
splot x**2+y**2

set view 0,0 #設置視角,(0,0)將投影到底面上去
unset ztics #把z軸上的數字給去掉
unset surface
splot x**2+y**2
reset

 

輸出文件

在啟動時,您可能注意到終端類型設置為 X11gnuplot采用標准設計,可以在多個終端設備上繪圖。這包括直接打印到多種打印機中,包括 EpsonHP Imagen 打印機。它甚至可以在偽設備中繪圖,如 postscript png。這主要涉及生成輸出文件,而不是可查看文件或打印輸出。這是將您的圖表包含在其他報表中的一種技巧。

例 14 設置輸出和終端類型

set terminal png     # gnuplot recommends setting terminal before output
set output ‘output.png’  # The output filename
plot sin(x)

現在,文件 output.png 中有了您剛才繪制的圖。

所有終端在能力上都不相同。其中的一些(如 LaTeX)可能不支持文本的旋轉,所以如果您像我們前面那樣設置 ylabel,在不同的終端中可能顯示不一樣。換句話說,您可以在 LaTeX 的特定終端中使用 LaTex 命令。例如,set ylabel $sin(\\\\theta)$(注意我們使用兩個反斜杠產生一個 LaTex 所需的反斜杠 —— gnuplot 在將雙引號中所括的字符串傳送到終端驅動程序之前,先對其進行反斜杠處理)。現在,您可以使用 \\input{output.tex} 將輸出文件包含在 LaTeX 文件中。要在 PostScript 終端中獲得相同的結果,使用相應的 PostScript 命令:{/Symbol q}。在 enhanced PostScript LaTeX 中,您可以使用表示法 x^{superscript} x_{subscript} 得到上標文字。還要注意縮寫的終端和輸出命令:

例 15 eps 驅動程序的能力

set term post enh    # enhanced PostScript, essentially PostScript with bounding boxes
set out 'gplt.eps'
set xlabel '{/Symbol q_1}
set ylabel 'sin^2({/Symbol q_1})'
plot sin(x)**2

其他

順便說一下,我們提供的所有例子都可以在交互模式或批處理模式下運行。要以交互模式運行,在提示符中輸入每個命令。要以批處理模式運行,將命令輸入或添加到文本文件中,然后在 gnuplot提示符中使用 load 'filename' 讀入文件,或者在 shell 提示符下將其作為參數提供給 gnuplot$ gnuplot filename。使用第二種方法,gnuplot會在執行輸入文件中的所有命令后退出,所以當直接繪圖到文件中時,采用批處理模式執行特別有效。如果在屏幕上繪圖時使用第二種方法,輸出窗口一出現(當 gnuplot退出時)就會消失,所以您需要使用顯式的“pause -1”命令(請參閱 help pause)來保持窗口。

X 環境下,gnuplot 如同其他 X client 程序一樣,可接受許多參數。如

gnuplot -font 8x13bold      # 設定字形為 8x13bold。
gnuplot -geometry 900x700  # 設定窗口的長為 900 pixel 寬為 700 pixel。
gnuplot -bg black            # 設定背景顏色為黑色。

gnuplot 繪制數學函數或數值資料的步驟大體如:

定義常數及函數:定義常數及函數,使程式模組化及易於了解。

設定繪圖環境:gnuplot 繪圖之前已預先設定許多繪圖參數。

繪圖:在定義數學函數或設定繪圖環境之后,接着就是繪出數學函數或數值資料的圖形。gnuplot 提供操作方便的繪圖指令——plot (2D) splot (3D)

產生輸出結果:在終端上繪出結果后,可經由一些步驟而產生不同輸出裝置所需的輸出。

依照上述過程,可快速地畫出圖形。剩下的步驟就是細心的調整繪圖環境參數或修改函數方程式、常數等,即可得到滿意的結果。

常量、操作符和函數

數字

 

gnuplot 表示數字可分成整數、實數及復數三類:

整數:gnuplot C 語言相同,采用 4 byte 儲存整數。故能表示 -2147483647 +2147483647 之間的整數。

實數:能表示約 6 7 位的有效位數,指數部份為不大於 308 的數字。

復數:以 {<real>,<imag>} 表示復數。其中<real>為復數的實數部分,<imag>為虛數部分,此兩部分均以實數型態表示。 如 3 + 2i 即以 {3,2} 表示。

gnuplot 儲存數字的原則為,若能以整數方式儲存則以整數儲存數字,不然以實數方式儲存,其次以復數方式儲存。例如在 gnuplot 執行

print 1/3*3
print 1./3*3

分別得到 0 1.0 的結果。這是因前者使用整數計算,而后者采用實數計算的結果。執行

print 1234.567
print 12345 + 0.56789
print 1.23e300 * 2e6
print 1.23e300 * 2e8

分別得到 1234.5712345.62.46e+304 undefined value 的結果。這些例子是受到實數的有效位數和所能表現最大數字的限制。這是我們要注意的。

操作符

gnuplot 的操作符與 C 語言基本相同。 所有的操作均可做用在整數、實數或復數上。

表格 1 Unary Operators

Symbol

Example

Explanation

-

-a

unary minus

~

~a

one's complement

!

!a

logical negation

!

a!

factorial

表格 2 Binary Operators

Symbol

Example

Explanation

**

a**b

exponentiation

*

a*b

multiplication

/

a/b

division

%

a%b

modulo

+

a+b

addition

-

a-b

subtraction

==

a==b

equality

!=

a!=b

inequality

&

a&b

bitwise AND

^

a^b

bitwise exclusive OR

|

a|b

bitwise inclusive OR

&&

a&&b

logical AND

||

a||b

logical OR

?:

a?b:c

ternary operation

函數

gnuplot 中函數的參數可以是整數,實數或是復數。表格 3gnuplot 所提供的函數。

表格 3 gnuplot functions

Function

Auguments

Returns

abs(x)

any

absolute value of x, |x|; same type

abs(x)

complex

length of x, sqrt( real(x)^2 + imag(x)^2 )

acos(x)

any

1/cos(x) (inverse cosine) in radians

Acosh(x)

any

cosh−1 x (inverse hyperbolic cosine) in radians

arg(x)

complex

the phase of x in radians

asin(x)

any

1/sin(x) (inverse sin) in radians

asinh(x)

any

sinh−1 x (inverse hyperbolic sin) in radians

atan(x)

any

1/tan(x) (inverse tangent) in radians

atan2(y,x)

int or real

tan−1(y/x) (inverse tangent)

atanh(x)

any

tanh−1 x (inverse hyperbolic tangent) in radians

besj0(x)

int or real

J0 Bessel function of x

besj1(x)

int or real

J1 Bessel function of x

besy0(x)

int or real

Y0 Bessel function of x

besy1(x)

int or real

Y1 Bessel function of x

ceil(x)

any

smallest integer not less than x (real part)

cos(x)

radians

cos x, cosine of x

cosh(x)

radians

cosh x, hyperbolic cosine of x

erf(x)

any

Erf(real(x)), error function of real(x)

erfc(x)

any

Erfc(real(x)), 1.0 - error function of real(x)

exp(x)

any

exponential function of x

floor(x)

any

largest integer not greater than x (real part)

gamma(x)

any

Gamma(real(x)), gamma function of real(x)

ibeta(p,q,x)

any

Ibeta(real(p,q,x)), ibeta function of real(p,q,x)

inverf(x)

any

inverse error function of real(x)

igamma(a,x)

any

Igamma(real(a,x)), igamma function of real(a,x)

imag(x)

complex

imaginary part of x as a real number

invnorm(x)

any

inverse normal distribution function of real(x)

int(x)

real

integer part of x, truncated toward zero

lambertw(x)

real

Lambert W function

lgamma(x)

any

Lgamma(real(x)), lgamma function of real(x)

log(x)

any

ln(x), natural logarithm (base e) of x

log10(x)

any

log(x), logarithm (base 10) of x

norm(x)

any

normal distribution (Gaussian) function of real(x)

rand(x)

any

normal distribution (Gaussian) function of real(x)

real(x)

any

Rand(real(x)), pseudo random number generator

sgn(x)

any

real part of x

sin(x)

any

1 if x>0, -1 if x<0, 0 if x=0. imag(x) ignored

sinh(x)

radians

sin(x), sine of x

sqrt(x)

radians

sinh(x), hyperbolic sine x

tan(x)

any

sqrt(x), square root of x

tanh(x)

complex

tan(x), tangent of x

column(x)

int

column x during datafile manipulation.

defined(X)

variable name

returns 1 if a variable X is defined, 0 otherwise.

tm hour(x)

int

the hour

tm mday(x)

int

the day of the month

tm min(x)

int

the minute

tm mon(x)

int

the month

tm sec(x)

int

the second

tm wday(x)

int

the day of the week

tm yday(x)

int

the day of the year

tm year(x)

int

the year

valid(x)

int

test validity of column(x) during datafile manip.

 

下面舉一些例子:

plot [0.5:20] besj0(x), besj1(x), besy0(x), besy1(x)
plot [0:5] erf(x), erfc(x), inverf(x)

 

 

用戶自定義函數和常量

 

gnuplot 中,用戶可自定函數。函數可有 1 5 個自變量。 其定義函數的語法如下:

 

<function-name> ( <dummy1> {,<dummy2> {, ...}}) = <expression>

 

而用戶定義常數的語法如下:

 

<variable-name> = <constant-expression>

 

下面舉一些例子:

 

# 常數 w 為 2。
w = 2                       
# 常數 q 為小於但最接近 tan(pi/2 - 0.1) 的整數。
q = floor(tan(pi/2 - 0.1))  
# 函數 f(x) 為 sin(w*x),其中 w 為常數。
f(x) = sin(w*x)             
# 函數 sinc(x) 為 sin(pi*x)/(pi*x)。
sinc(x) = sin(pi*x)/(pi*x)  
# 函數 delta(t) 為脈沖函數。
delta(t) = (t == 0) 
# 函數 ramp(t) 當其小於零為零,當其大於零為斜率等於 1 的直線。
ramp(t) = (t > 0) ? t : 0 
# 函數 min(a,b) 取兩者中較小的數。
min(a,b) = (a < b) ? a : b
comb(n,k) = n!/(k!*(n-k)!)
len3d(x,y,z) = sqrt(x*x+y*y+z*z)
plot f(x) = sin(x*a), a = 0.2, f(x), a = 0.4, f(x)

gnuplot 已定義的常數僅有 pi (pi = 3.14159)

如第二章所述,只要鍵入 plot sin(x), '1.dat' 即可得到圖1 的結果。gnuplot 自動調整 X 軸、 Y 軸的顯示范圍,使圖形顯示在適當的位置並選擇不同的顏色、圖形,用以區別不同的函數或數據,也就是 gnuplot 自動調整其所需的繪圖環境。若我們需要一些特別的繪圖參數,如在 3D 中加入等高線、設定消去隱藏線、改變 X 軸、Y 軸的座標點名稱等,可由改變繪圖環境參數而改變之。 本章說明這些繪圖參數設定的方法與功能。

Axis

繪圖參數在設定坐標軸方面的參數可分為變量名稱、數字格式、網格、顯示范圍、坐標軸顯示方式與顯示與否等六方面的設定:

變量名稱設定

一般以 x 為橫軸上的變量。可用 dummy 設定為其它的名稱, 所繪函數的變量名稱亦隨之改變。如 set dummy t 將自變量改為 t,圖8、圖17、圖20 均改變自變量名稱。

數字格式設定

設定數字的顯示方式與格式。由 format 此項參數設定顯示格式,其語法為 :

 

set format {<axes>} {"<format-string>"}
show format     # 顯示各軸數字顯示的型式

其中 axis xyzxy 或預設為xyformat-string 為描述數字格式的字符串,可接受如 C 語言中 printf 對數字的 feg 三種格式化描述,亦可加入文字 (必須少於100 )。以下舉一些例子:

set format xy "%.2e"
set format x  "%3.0f cm"

顯示方式由 ticsxtics等設定。

xtics 是對 X 坐標軸上的格點做設定。如起始點、結束點、間隔或在軸上特定點放特定的名稱。其語法為:

set xtics { {<start>, <incr>{, <end>}} |
      {({"<label>"} <pos> {, {"<label>"} <pos>}...)} }
set noxtics   # 不標示任何 X 軸上的標點。
show xtics    # 顯示 X 軸標點的狀況。

下面是三個改變格點的例子。

# 每隔 2 格一個標點
set xtics -10,2,10
plot sin(x)




# 以文字作為標點
set xtics ("low" -10, "medium" 0, "high" 10)
plot sin(x)


 

# 在特定位置放上標點
set xtics (-10,-9,-7,-3,0,pi/2,2*pi)
plot sin(x)

 

xdtics X 座標軸上標點名稱依 01改為 SunMon… Sat 等。 大於 7 的數目除以7 取其餘數。

# 將標點名稱改為 Sun, Mon, ... Sat 等
set xdtics
plot [0 : 10] sin(x)

 

ytics, ymtics, ydtics, ztics, zmtics, zdtics xtics, xmtics, xdtics 相似,不同點是作用在不同的軸上。

ticslevel 是在畫 3D 圖形時,調整 Z 軸的相對高度。語法為:

set ticslevel {<level>}
show tics

網格設定

XY 座標平面上依刻度畫上方格子。

# 設定變數為 t
set dummy t
# 設定 X 軸 Y 軸標點的格式
set format xy "%3.2f" 
# 產生網格
set grid 
plot  sin(t)

 

座標顯示方式

 

分為線性與對數兩種。一般為前者,若要改為對數方式,其語法為:

set logscale <axes> <base>
set nologscale <axes>
show logscale

其中 axes X 軸、Y 軸、Z 軸的任意組合。base 預設為 10

顯示范圍設定

改變各軸的顯示范圍。autoscale 參數設定后 gnuplot 自動調整顯示范圍。其余的如 rrange, trange, xrange, yrange, zrange 則是由使用者設定該軸的范圍,以 xrange 為例,其語法為:

set xrange [{<xmin> : <xmax>}]

其中參數 <xmin> <xmax> 代表 X 軸的起點與終點, 可以是數字或數學式子。如圖7 set [0:10] sin(x) 設定 X 軸顯示范圍為 0 10 之間。此時可用

set xrange [0:10]
plot sin(x)

使用 autoscale 參數調整顯示范圍,其語法為:

set autoscale <axes>
set noautoscal <axes>
show autoscale

其中 <axes> gnuplot 欲調整的軸,可以是 x, y, z xy,預設為所有的軸。

座標軸顯示與否設定

設定是否要畫出座標軸,以 X 軸為例:

set xzeroaxis     # 設定顯示 X 座標軸
set noxzeroaxis   # 設定不顯示 X 座標軸
show xzeroaxis    # 檢查 X 座標軸顯示與否

Label

gnuplot 除了繪出圖形外,尚可加入注解做為輔助說明。這注解包括文字與線條兩方面,其提供的設定有:

功能

繪圖參數名稱

線條

arrow

文字注解

key, label, time, title, xlabel, ylabel, zlabel

線條

在圖上畫一線段可以選擇有無箭頭。其語法為:

set arrow {<tag>} {from <sx>,<sy>{,<sz>}} 
 {to <ex>,<ey>{,<ez>}} {{no}head}
unset arrow {<tag>}    # 刪除一線條
show arrow             # 顯示線條使用情況

其中參數 <tag> 是給該條線條一個整數名稱,若不設定則為最小可用整數。此線條由坐標 (sx, sy, sz) (ex, ey, ez) (2D 中為 (sx, sy)(ex, ey))。參數 nohead 為畫沒有箭頭的線段,參數 head 或沒有 nohead 為畫有箭頭的線段。圖24 中使用沒有箭頭的線段作為輔助說明。以下為一些例子:

# 畫一帶有箭頭的線條由原點到 (1,2)。
set arrow to 1,2 
# 畫一名為 3 的帶箭頭線條 由 (-10,4,2) 到 (-5,5,3)。
set arrow 3 from -10,4,2 to -5,5,3 
# 改變名為 3 的線條起始點至 (1,1,1)。
set arrow 3 from 1,1,1
# 刪除名為 2 的線條。
unset arrow 2
# 刪除所有線條。
unset arrow
# 顯示線條的使用情形。
show arrow

文字注解

分為設定標題 (title),標示 (label) 與時間 (time) 三部份。標題設定為在圖的正上方加上說明本圖的文字。其語法為:

set title {"<title-text>"} {<xoff>}{,<yoff>}
show title

設定參數 <xoff> <yoff> 為微調標頭放置的位址。 xlabel, ylabel, zlabel 的語法與 title 相同,其各自描述一坐標軸。

標示 (label) 為在圖上任一位置加上文字說明,一般與線條一並使用。其語法為:

set label {<tag>} {"<label_text>"}
{at <x>,<y>{,<z>}}{<justification>}
unset label {<tag>}       # 刪除一標示
show label                # 顯示標示使用情況

其中參數 <tag> "線條" (arrow) <tag> 意義相同,用以區別不同的 label。參數 <justification> 是調整文字放置的位置,可以是 leftright center。舉一些例子:

# 將 y=x 放在座標 (1,2) 之處。
set label "y=x" at 1,2
# 將 y=x^2 放在座標 (2,3,4) 之處,並命名為 3。
set label 3 "y=x^2" at 2,3,4 right
# 將名為 3 的標示居中放置。
set label 3 center
# 刪除名為 2 的標示。
set nolabel 2
# 刪除所有標示。
set nolabel
# 顯示標示使用情形。
show label

一般繪一圖形后,gnuplot 將函數名稱或圖形名稱置於右上角。 key 參數設定可改變名稱放置位置。其語法為:

set key
set key <x>,<y>{,<z>}
unset key
show key

其中參數 <x>, <y>, <z> 設定名稱放置位置 。unset key 為不顯示名稱,若使用 set key 則再度顯示名稱。若使用 set key 0.2, 0.5 則顯示函數名稱於坐標 (0.2, 0.5) 之處。

unset key
plot sin(x), cos(atan(x))

 

set key at 2, 0.5 plot [-pi/2:pi] cos(x), -( sin(x) > sin(x+1) ? sin(x) : sin(x+1))

 

時間參數設定是將圖產生的時間標在圖上。其語法為

set time {<xoff>}{,<yoff>}
unset time
show time

設定參數 <xoff> <yoff> 為微調時間放置的位址,正數表示向上或向右,負數為反方向,以字的長寬作為單位。

set title "sin(x)+sin(2*x)"
set xlabel "X-axis"
set ylabel "Y-axis"
set arrow from  -2,1 to -2.5,0.4
set label "Local max" at -2,1.1
unset key
set time
plot [-5:5] sin(x)+sin(2*x)









 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM