gnuplot是由Colin Kelly和Thomas Williams于1986年開發的命令行交互式繪圖工具,支持二維和三維圖形可視化,可在Linux、Windows、macOS等平臺運行。該工具通過讀取外部數據或數學函數生成圖形,提供交互式操作與批處理兩種模式。 其名稱中的“gnu”與自由軟件基金會無關,只是一個巧合,gnuplot有自己的版權聲明。
gnuplot支持輸出PostScript、PDF、PNG等多種格式文件,并可直接嵌入LaTeX文檔。其輸出終端設置包含交互式屏幕顯示(如Qt、wxWidgets、X11)和文件輸出模式,通過設置terminal參數實現格式切換。工具內置三維曲面圖、等值線圖繪制功能,支持參數方程可視化及多圖線疊加繪制。作為第三方應用(如Octave)的繪圖引擎,gnuplot提供用戶手冊、演示庫及多語言文檔資源。當前gnuplot的主要版本為6.0,最后更新于2025年9月。
gnuplot是一個命令行驅動的交互式函數繪圖工具,用于linux、OSX、MSWin、VMS和許多其他平臺。軟件受版權保護但自由分發。gnuplot最初是為了讓科學家和學生可視化數學函數和數據而編寫的。
名稱中的“gnu”與自由軟件基金會無關,只是一個巧合。gnuplot不是由GPL覆蓋,而是有自己的版權聲明。
gnuplot支持2D曲線和3D曲面繪圖。曲面可以繪制為網格圖、3D坐標空間中的浮動圖或等高線圖。對于2D圖,有許多繪圖樣式,包括線條、點、箱形圖、熱圖、堆疊直方圖和3D數據的等高線投影。支持輸出到許多類型的終端、打印機和文件格式。
gnuplot的接口包括命令行編輯和歷史記錄,支持交互式輸入或腳本驅動。圖形可以添加任意標簽、箭頭、軸標簽、標題、日期和時間、鍵。
gnuplot的主要貢獻者包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等。幫助和錯誤報告應訪問項目網站。
gnuplot于1986年由Colin Kelly和Thomas Williams開發,最初是為了讓科學家和學生可視化數學函數和數據而編寫的。其名稱中的“gnu”與自由軟件基金會無關,只是一個巧合。該軟件受版權保護但自由分發,主要貢獻者包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等人。截至2025年9月,gnuplot當前的主要穩定版本為6.0。
2025年9月,gnuplot發布了主要版本6.0。
根據項目官方頁面(截至2026年2月),gnuplot當前的核心維護團隊包括:broeker, cgaylord, lhecking, sfeam。
此外,項目歷史上的主要貢獻者還包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等。
gnuplot采用C語言編寫,支持輸出到許多類型的終端、打印機和文件格式。
它處理2D曲線和3D曲面,曲面可以繪制為網格圖、3D坐標空間中的浮動圖或等高線圖。
對于2D圖,有許多繪圖樣式,包括線條、點、箱形圖、熱圖、堆疊直方圖和3D數據的等高線投影。
Linux環境下的安裝
終端輸入命令 $ sudo apt-get install gnuplot 系統自動獲取包信息、處理依賴關系,完成安裝
安裝完畢后,在終端運行命令 $ gnuplot 進入gnuplot
系統出現:gnuplot>是提示符,所有gnuplot命令在此輸入
Windows環境下的安裝
到sourceforge搜索gnuplot,然后下載win32的zip壓縮包,里面包含全部需要的文件,下載,釋放到本地硬盤的目錄里,假設是c:gnuplot。然后到這個目錄的下查找bin這個目錄,在bin目錄下有一個名為wgnuplot.exe的文件,雙擊該文件,就出現了GUI界面的gnuplot
至此,你已經成功安裝了gnuplot.
在提示符下面輸入:
gnuplot> plot [-3.14:3.14] sin(x)
然后就可以看到結果.
上面有橫軸有縱軸,還有圖例.
如果你不需要上面的圖例,你可以在運行:
gnuplot> unset key
如果要還原
gnuplot> set key default
然后再運行上面的繪圖命令就可以實現沒有圖例或者恢復圖例的效果了
一般情況下使用gnuplot都是科學繪圖,因此很多都是放在文章里面。一般優秀的科技文獻都是用latex來編寫的,所以gnuplot提供了直接輸出 tex文件的功能,只需要把output設置為latex就可以了。下面來看一個例子,就把上面的正弦曲線插入到你的文章中。在命令行下輸入:
gnuplot> set terminal latex
set output "sin.tex"
plot [-3.14:3.14] sin(x)
那么程序自動生成了一個tex文件,其包含一系列代碼,都是繪圖用的,可以用寫字板打開,里面都是一些指令,你完全可以忽略掉。你可以把這個文件直接插入你的文章中,例如
egin{figure}
egin{center}
input{sin.tex}
end{center}
end{figure}
以后凡是要生成插入latex的圖片,就可以用上面的辦法實現。
當然前面的圖已經很不錯了,就是稍顯單調,這里給它加點裝飾,來個x軸和y軸的提示、圖片是說明。這樣才更像一幅論文里面的圖片。在命令行下輸入以下代碼:
gnuplot> set terminal latex
set output "sinagain.tex"
set size 5/5.,4/3.
set format xy "$%g$"
set title "This is a plot of $y=sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "This is he$y$ axis"
plot [0:6.28] [0:1] sin(x)
依舊,生成一個tex文件,安裝前面講的方法把它包含進來。然后編譯成PDF的效果
這里用到了幾個命令:
set size 設置圖片的大小
set format xy 設置x、y軸文字的格式
set title 設置圖片標題
set xlabel 設置x軸的文字
一般情況下,科技論文的圖片很多都含有好幾個圖線,那么這里就介紹下如何在一張圖里顯示多張圖片。
先看代碼:
gnuplot> set terminal latex
set output "combine.tex"
set format xy "$%g$"
set title "Combination"
set xlabel "$x$ axis"
set ylabel "$y$ axis"
plot [-3.14:3.14] 0.2*x with points, sin(x) with lines
這里沒有很特別的地方,只是plot多了一個項目,當要繪制多個圖線的時候需要用逗號來分隔,注意這里不是中文的逗號,而是西文的逗號。另外with后面的參數是說用什么線性來繪制。出來的效果看下面的圖:
接下來再對圖片進行加工。一般圖片x軸每個計數單位都是希望能夠控制的,而不是系統自己來決定的,那么可以通過以下的代碼來實現。
看代碼:
gnuplot> set terminal latex
set output "tic.tex"
set format y "$%g$"
set format x "$%.2f$"
set title "This is $sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "$sin(x)$"
set xtics -pi, pi/4
plot [-pi:pi] sin(x)
把生成的tex文件插入你的latex文件中,就出現了以下的效果:
還是沒有大變化,就加了一個set xtics這個是設置x的間距,也就是從-pi開始、每隔pi/4出現一次,pi是gnuplot內建的一個變量,所以只要輸入pi,系統知道其含義。
mac環境下的安裝
先安裝brew(一款mac下包管理工具,類似apt),已經安裝跳過。
終端輸入brew install gnuplot,系統會自動的下載依賴的包并完成安裝。