https://www.ibm.com/developerworks/cn/linux/l-gnuplot/index.html
http://blog.sciencenet.cn/blog-373392-527507.html
http://blog.sciencenet.cn/blog-373392-529904.html
語法是統一的:通過輸入 help <command>
可以獲得任何命令的幫助。接着啟動 gnuplot,嘗試命令 help set yrange
和 help set
(在每個命令之后,使用q
退出幫助)。注意 yrange
是 help set
下的可用子選項之一。
在提示符中輸入 plot sin(x)
:您應該在彈出窗口中看到熟悉的正弦曲線。
set xrange [-pi:pi]
replot
reset
replot
命令,它執行先前的 plot 命令。當您繪制曲線圖且需要不斷對該圖進行修改以添加想要的特征時,此命令會非常有用。另外,replot 使您可以添加更多的圖。嘗試輸入
replot cos(x)
。依照語法,該命令等同於
plot sin(x), cos(x)
。Replot 就是獲取先前的繪圖字符串,添加必要的逗號,然后附加輸入給它的其余部分。
set title "My first graph"
set xlabel "Angle, \n in degrees"
set ylabel "sin(angle)"
plot sin(x)
現在,我們注意到 x 軸實際沒有標記為度數,看起來不是很好。要修改此問題,通過調整 x 軸上的 tic 標記,使指定的(主)標記僅以 90 度增加和輔標記以 45 度增加。主 tics 的“級別”為 0,這是默認值;輔 tics 的級別為 1。每個點分別由一個 3 元組指定: "label"
(放在引號中)、 <point-at-which-tic-is-made>
和 <optional-level>
。
1
2
3
4
5
6
7
8
9
|
set xrange [-pi:pi] # we want only one cycle
set xtics ("0" 0, \
"90" pi/2, "-90" -pi/2, \
"" pi/4 1, "" -pi/4 1, \
"" 3*pi/4 1, "" -3*pi/4 1)
set grid
set xlabel "Angle,\n in degrees"
set ylabel "sin(angle)"
plot sin(x)
|
圖 4. 帶有 tics、標題、網格和標簽的軸的 sin(x)

xtics
命令功能非常多,具有方便的選項,用於以固定增量創建 tic 標記(在對數標度中為正常倍數),以及用於時間相關數據的特殊格式。查看
help set xtics
中的例子可以獲得更多信息。
終端設備 —— 題外話
在啟動時,您可能注意到終端類型設置為 X11
。Gnuplot 采用標准設計,可以在多個終端設備上繪圖。這包括直接打印到多種打印機中,包括 Epson、HP 和 Imagen 打印機。它甚至可以在偽設備中繪圖,如 postscript 和 png。這主要涉及生成輸出文件,而不是可查看文件或打印輸出。這是將您的圖表包含在其他報表中的一種技巧。雖然我還沒有發現在 Windows 中與在 Linux 中有什么不同,本文檔建議您在設置輸出文件名之前先設置終端類型:
清單 4. 設置輸出和終端類型
1
2
3
4
|
set terminal png # gnuplot recommends setting terminal before output
set output "output.png" # The output filename; to be set after setting
# terminal
replot
|
現在,文件 output.png 中有了您剛才繪制的圖,且可以包含在一個更大的報表中。許多普遍使用的排版和制圖程序都有專門的終端,這些程序包括 Adobe Illustrator( set term aifm
)、Corel Draw( set term corel
)、AutoCad( set term dxf
)和多種 LaTex 相關的終端( eepic
、 latex
、 pstricks
、 texdraw
、 tpic
等等)。您還可以得到 PostScript、enhanced PostScript (eps) 或 Adobe PDF 格式的文件。您的 gnuplot 版本可能沒有編譯所有的終端驅動程序 —— 例如,Windows 用戶不需要 Xll 終端,Linux 用戶不需要 Windows 終端。類似地,出於法律原因,gnuplot 4.0 移除了對 gif 終端的支持。
所有終端在能力上都不相同。其中的一些(如 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}
得到上標文字。還要注意縮寫的終端和輸出命令:
清單 5. eps 驅動程序的能力
1
2
3
4
5
6
|
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
|
參考資料部分的代碼補充說明包含具有以上命令的 TeX 文件示例。
鼠標支持
版本 4.0 提供了新的功能,Windows 和 X11 終端支持鼠標交互。鼠標支持有兩個主要用途:坐標跟蹤和縮放。鼠標指針的當前坐標顯示在終端窗口的左下角。通過雙擊第一個鼠標按鈕可以將其復制到剪貼板中。當您需要設置需要直接坐標的標簽或箭頭時,此操作會非常有用。(使用 help arrow
和 help label
可以獲得這些命令的更多詳細信息。)還可以拖動第二個(或右擊)鼠標按鈕來選擇要放大的矩形區域。在 3D 繪圖中,您可以拖動鼠標來旋轉圖像(按住 Ctrl 鍵將僅更改軸的視圖;所以對於要用很長時間才能呈現的圖,可以先更改軸,然后放開 Ctrl 鍵來重新呈現圖)。
鼠標支持還支持一組有用的熱鍵:如果先前對圖進行了放大, u則取消訪大。 g切換網格, l切換坐標軸上的刻度; L切換最靠近指針的最標軸上的刻度, r切換標尺,標尺會建立任意原點。啟用了標尺后,屏幕的底部顯示當前坐標指針距離標尺原點的 x 軸距離和 y 軸距離以及距離實際原點的 x 軸和 y 軸距離(與點的坐標相同)。在 3D 中,方向鍵可以用在鼠標拖拉的地方來旋轉圖像。空格鍵激活命令窗口, q退出終端窗口。要查看所有選項,在支持鼠標的終端中輸入 h。
控制比例和長寬比
默認情況下,gnuplot 對 x 軸和 y 軸都使用比例系數 1,但是它對控制圖形的長寬比(y 軸長度與 x 軸長度的比率)不起作用。終端驅動程序使用終端的默認長寬比。比例系數、長寬比或者兩者都可以使用 set size
命令指定,例如:
# square is synonymous to an aspect ratio of 1;
# scale y-axis by 2, retain x-axis size
set size ratio square 1,2
gnuplot 使用給定的長寬比能否成功繪制圖可能受到終端能力的限制。 set size
也是與 multiplot
命令一起使用才有用,multiplot 命令用於在同一輸出屏幕或文件中生成多個圖。
繪制多條曲線
正如精明的讀者可能已經從上面關於 replot 的注釋中推測到的,gnuplot 使您可以同時畫多條線。假設我們同時繪制正弦和余弦曲線。簡單的 plot 命令為 plot sin(x), cos(x)
;要畫的曲線以逗號分隔。如果不再指定其他項,gnuplot 自動顯示兩個曲線圖,從而它們可以互相區別 —— 在諸如 Windows 和 Xll 的終端中,gnuplot 使用不同的顏色。單色終端使用不同種類的線顯示曲線圖。通過查看圖例(或鍵),您應該能夠知道圖中的線分別是何種曲線。gnuplot 還允許您指定繪圖的樣式,以便獲得進一步的控制:
unset xtics # keep all other things simple
plot sin(x) with linespoints pointtype 5, cos(x) w boxes lt 4
圖 5. 多條曲線
with
子句(請參閱 help plot with
,如果使用版本 4.0,還有 help plotting styles
)使您可以詳細而精確地指定線的樣式。在本例中,我們說明兩種有用的樣式。第一種樣式 linespoints
通常在對數據繪圖時非常有用,它在涉及的每個示例或數據點處標記一個點,並使用線性插值法連接連續的點。這里我們另外指定點類型為 5,它選擇終端允許的第五種點。第二種樣式 boxes
更適合繪制直方圖數據。注意我們如何在 cos(x) 曲線中將 with
縮寫成 w
。類似地, lt
是 linetype 的縮寫,是另一個特定於終端的設置,它選擇終端可以繪制的四種線。不必說(什么,您還沒有嘗試 help plot with
嗎?),您可以使用 pt
代替冗長的 pointtype。如果想在多條線中使用相同的繪圖樣式(在一個 plot 命令中或在多個 plot 命令中),可以使用 set 命令設置繪圖樣式。在 gnuplot 4.0 中,使用 set style function linespoints
;以前的版本使用語法 set function style boxes
。要更改用於繪制與函數相對的數據集合的樣式,使用 set style data linespoints
(以前的版本使用 set data style linespoints
)。
with
子句是我們使用除了 set
之外的其他項來定制圖的第一個例子。一些其他普遍使用的選項也可以直接在 plot 命令中設置。例如,還可以設置 xrange: plot [-pi:pi] sin(x)
。對默認繪圖選項的快速而隨意的一次性更改則使用此類語法。要在多個圖中或在多個 plot 命令中重新使用,需要使用 set
命令。
當繪制兩條或多條曲線時,我們需要關鍵字或圖例來對它們進行區分。默認情況下,關鍵字在右上角;但是如果它妨礙了圖,可以將關鍵字放到其他位置 —— 如果願意,甚至可以放到圖外。下面的代碼片段將關鍵字放在了左上角,並在它周圍設置了一個框。我們還通過在 plot 命令中給定明確的標題來控制圖例中為曲線提供的名稱。title 可以縮寫為 t,正如我們對余弦曲線的設置。如果不想在圖例中命名曲線,使用 notitle
,而不是 title
。最后一點,也是新用戶經常出錯的地方就是如果有標題,標題必須放在 with
子句的前面: