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
gnuplot画图中文标注相关问题

上图中红框中的字体对应华文行楷,那么参数中应该填'STXingkai'。

将以下代码保存为test.plt并运行

set encoding utf8
set xlabel "横坐标"
set ylabel "纵坐标"
set term pdfcairo lw  font "simsun,8"
set output "test.pdf"
plot sin(x)
set title "正弦函数"
set output

可以看到中文可以正常显示。最后一行的'set output'还是尽量保留,因为有些IDE不加这一句会认为画图还没结束,画图的结果就不会写入文件中,就会一直卡住。

注:如果直接在gnuplot的IDE中输入以上代码,可能还是会乱码,估计是gnuplot的IDE不支持中文编码直接录入。

gnuplot画图中文标注相关问题

如果原来用eps输出的程序通过size指令对图形进行了放缩,改变输出方式后,排版方式变化了,图形的效果可能会发生较大变化,这个可以通过指定pdf输出的size来解决,输出的size按照原来的比例适当放大,比如原来放缩的比例是

set size 0.7,0.4

输出pdf的时候可以:

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

如果程序输出的图有白边,考虑是不是和我一样是双屏配置导致的,我的单屏幕测试正常。

还有一种折衷的方式是输出还是原来的eps,用inkscape打开,修改对应的英文标注为中文,再保存为eps格式,比较费劲,不太建议这样操作。

参考资料:

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

相关推荐