zoukankan      html  css  js  c++  java
  • 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_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionFonts
    

    上图中红框中的字体对应华文行楷,那么参数中应该填'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

  • 相关阅读:
    Java中try-catch-finally的一点理解
    子类继承父类的私有属性
    Java中的String[] args
    Java类和类成员的访问权限修饰符
    JAVA中抽象类与接口的区别
    Java C# .net 和 C C++ 跨平台的区别
    Java中的instanceof关键字
    深入理解JAVA的多态性[转]
    Linux文件系统的目录结构
    硬盘分区
  • 原文地址:https://www.cnblogs.com/followyourheart/p/gnuplot.html
Copyright © 2011-2022 走看看