gnuplot畫圖中文標注相關問題


gnuplot是一個基於命令行的開源跨平台畫圖工具包,畫圖功能非常豐富。不過最近在考慮如何在gnuplot圖中添加中文標注的過程中遇到了一些問題,記錄如下。

 

gnuplot支持多種的輸出格式,比如png、svg、eps、pdf。因為論文需要,一般我們要求得到的矢量圖的格式,采用eps或者pdf作為輸出樣式的情況居多。

當直接繪制輸出eps格式時,輸出的eps文件會自動裁邊,將多余的空白去掉(相當於自帶gsview里面的automatically calculating bounding box操作)

set terminal postscript eps enhanced color font 'Helvetica,12'

但是由於歷史原因,eps格式輸出對中文的支持很差。而如果輸出pdf、svg、png等格式可以比較容易地實現支持中文。比如輸出到pdf,可以用pdfcairo作為輸出選項。

set term pdfcairo  font "simsun,12"

這種書寫格式,其中的字體默認搜索的路徑是windows下自帶的字體,'simsum'是宋體。其中填入的名字是和注冊表中以下位置的字體名稱對應的。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Fonts

上圖中紅框中的字體對應華文行楷,那么參數中應該填'STXingkai'。

另外通過fc-list也可以查看系統中已經安裝的中文字體

如果windows下輸出的結果是亂碼,需要先調整命令行的編碼,UTF-8的代碼頁為65001 

chcp 65001

Windows下CMD中文亂碼問題解決方法

 

 

將以下代碼保存為test.plt並運行

 

set encoding utf8
set xlabel "橫坐標"
set ylabel "縱坐標"
set term pdfcairo lw 2 font "simsun,8"
set output "test.pdf"
plot sin(x)
set title "正弦函數"
set output

可以看到中文可以正常顯示。最后一行的'set output'還是盡量保留,因為有些IDE不加這一句會認為畫圖還沒結束,畫圖的結果就不會寫入文件中,就會一直卡住。

注:如果直接在gnuplot的IDE中輸入以上代碼,可能還是會亂碼,估計是gnuplot的IDE不支持中文編碼直接錄入。

 

如果原來用eps輸出的程序通過size指令對圖形進行了放縮,改變輸出方式后,排版方式變化了,圖形的效果可能會發生較大變化,這個可以通過指定pdf輸出的size來解決,輸出的size按照原來的比例適當放大,比如原來放縮的比例是

set size 0.7,0.4

輸出pdf的時候可以:

set term pdfcairo font size 7,4 "simsun,12"

 

如果程序輸出的圖有白邊,考慮是不是和我一樣是雙屏配置導致的,我的單屏幕測試正常。

 

還有一種折衷的方式是輸出還是原來的eps,用inkscape打開,修改對應的英文標注為中文,再保存為eps格式,比較費勁,不太建議這樣操作。

 

gnuplot默認的圖形化編輯器非常難用,建議使用Sublimtext3,再安裝gnuplot插件,可以語法高亮,定位錯誤行,並快速編譯(需要將安裝好的gnuplot目錄加入到系統環境變量中)。

 

 參考資料:

http://www.phy.ntnu.edu.tw/demolab/html.php?html=doc/gnuplot-doc/html/pdfcairo

https://www.zhihu.com/question/39053655

http://vision.ouc.edu.cn/~zhenghaiyong/courses/tutorials/gnuplot/gnuplot-zh.pdf

 


免責聲明!

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



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