到目前为止,我们所有的gnuplot作图都只是输出到电脑屏幕上。如果要在我们的文档里使用这些图片,我们必须把它们以某种文件格式存储下来。前面已经介绍过,gnuplot里面控制图像输出方式的命令是terminal。

输出到电脑屏幕:

gnuplot> set terminal wxt

输出为eps文件。

gnuplot> set terminal postscript eps所以首先选择eps,是因为大量科学技术文档使用 LaTeX 来编辑排版,而eps是 LaTeX 最常用的图片格式,支持高质量的矢量图形,并且可以方便的转换为pdf、svg等其他常用格式。

输入这个命令之后,gnuplot会自动返回下面的信息:

还是用我们上次用过的降水量数据文件:gnuplot> set xlabel "Month"gnuplot> set ylabel "Precipitation (mm)"gnuplot> set xrange [0.5:12.5]gnuplot> set xtics 1,1,12gnuplot> set output "precipitation.eps"gnuplot> plot "precipitation.dat" using 1:2 w lp pt 5 title "Beijing", "precipitation.dat" using 1:3 w lp pt 7 title "Shanghai"gnuplot> set outputgnuplot> set term wxt

第五行有一个新命令:set output。这没什么多说的,就是指定输出文件的文件名。第七行还有一个set output,但是后面没有跟任何文件名。这其实是告诉gnuplot,这个文件已经输出完毕,可以关闭了。另外也可以用unset output,其实是相同作用。之所以这么做,是因为有些terminal支持多页文件,所以在画完图之后,gnuplot并不自动关闭文件,等待你输入下一页内容,除非你手动关闭,切换terminal,或者退出gnuplot程序。

这个图像可能并不是我们想要的。有几个地方我们想要修改一下:这个图是黑白的!我们想要彩色图。

有一组连线是虚线。这也难怪,黑白图如果不用虚线,还真分辨不出来。但我们想要彩色实线。

让直线稍微加粗一点。

标签文字显得小了些,我们想要大一点的字体。我们来重新画一下这个图:gnuplot> set terminal postscript eps color solid linewidth 2 "Helvetica" 20gnuplot> set output "precipitation-color.eps"gnuplot> replotgnuplot> set outputgnuplot> set term wxt这里我们用color参数表示我们要彩色图,solid表示我们要实线不要虚线,linewidth参数指定2倍线宽,而最后指定使用Helvetica 20号字体。让我们来看看新生成的eps文件:

这里的字体为 postscript level 2字体,共有35种。除了Helvetica,常用的还有Times-Roman,Arial。如果硬要多记两个字体名字,就记住Courier和Symbol吧。Courier是编程时常用的等宽字体,而Symbol字体可以用来显示希腊字母。如果你实在好奇还有哪些其它字体,可以看看下面的网页链接:

我用了Arial字体,adobe illustrator 打开eps文件时,没有报字体错误。eps图片插入word时,容易出错。我用word 2013 时,可以插入eps。word2010及以下版本可能插入出错。

上次讲过的 eps 文件其实很容易转换为 pdf,为什么我们还专门讲一下 pdf 格式输出呢?因为在 postscript terminal 下很难使用中文字体,而在 pdf 下面就容易多了,而 pdf 文件又很容易转换回 eps,这样就绕开了 eps 中文支持不好的问题。

png 是一种无损压缩位图格式,图形质量优于 jpg 等有损压缩格式,支持透明效果,可以生成非常小体积的文件,适于放在网上交流。通过各种图像处理软件,png 文件也很容易转换为其他位图格式。下面首先看一个 pdf 输出的例子,咱们还是用之前用过的城市降水量数据文件:gnuplot> set xlabel "月份"gnuplot>set ylabel "降水量(毫米)"gnuplot>set title "各城市月平均降水量"gnuplot>set xrange [0.5:12.5]gnuplot>set xtics 1,1,12gnuplot>set term pdfcairo lw 2 font "Times New Roman,8"gnuplot>set output "precipitation.pdf"gnuplot>plot "precipitation.dat" u 1:2 w lp pt 5 title "北京", "precipitation.dat" u 1:3 w lp pt 7 title "上海"gnuplot>set output这里我们用的terminal是pdfcairo,而不是简单的pdf。区别是pdfcairo使用了 cairo(一个2D图形程序库)和 pango(一个字体渲染程序库)来生成 pdf 文件,优点是更好的国际支持。有了之前的经验,这里的terminal参数不需要多解释了。这里我们使用了“Times New Roman” 8号字体。和 eps 下使用 postscript 字体不同,这里可以是电脑系统里安装的任何字体。在 Linux 下,可以使用fc-list命令察看系统里到底有哪些字体可用。下面我们来看生成的 pdf 图片:

这里有一个小问题:虽然数字使用了Times New Roman字体,但是汉字使用了其他字体(这里是我的系统默认的“文泉驿正黑”)。这是因为Times New Roman本来就不是中文字体。如果我们想让中英文混排时字体统一,必须使用支持中文的字体。下面我们来看 png 输出的例子:gnuplot>set term pngcairo lw 2 font "AR PL UKai CN,14"gnuplot>set output "precipitation.png"gnuplot>replotgnuplot>set outputgnuplot>set term wxt基于和上面同样的原因,这里使用的terminal是pngcairo而不是简单的png,而字体是AR PL UKai CN(文鼎简中楷)。下面是生成的 png 图片:

enhanced 文本模式如果我们希望输出稍复杂一点的文字标签,例如字母加角标,我们可以使用enhanced文本模式。,使用方法就是在set terminal的时候,在后面加上enhanced参数。enhanced模式里有一些表达特殊含义的字符,利用这些字符可以构成一些比较复杂的文字输出。这些特殊字符主要包括:^:表示后面的字符为上角标

_:表示后面的字符为下角标

@:表示后面的字符不占任何宽度

&{"string"}:表示一段空白,空白的长度等于花括号内那段字符串所占宽度

~:表示后面的两个字符重叠打印(相当于打字机在同一位置打印两个字符);也可以在第二个字符前加上一个数字,表示第二个字符相对于第一个字符有一个竖直方向的移动,移动距离等于该数字乘以字符尺寸。

上面提到的“字符”,也可以是包含在花括号{}内的“字符串”。除了上面这些特殊标志,还可以临时改变字符(或字符串)的字体,方法是:{/字体名=字体大小 字符}下面我们看一些例子:"a^x"

"a_x"

"a^b_{cd}"

这里的上下角标没有对齐,因为上标 b 需要占一定宽度

"a^@b_{cd}"

这里我们看到了 @ 的作用

"abc&{de}fg"

这里 & 后面的字符没有显示,留出一段和这些字符同样宽度的空白

"~a{1.2\\_}"

注意这里的两个反斜杠。因为下横杠(_)是一个特殊字符,需要在前面加反斜杠 \ 来表示它本来的意义,而反斜杠本身也是一个特殊字符,需要在它前面再加一个反斜杠。我们在第四讲里谈到过双引号和单引号的区别。如果我们在这里用单引号而不是双引号,那么只需要一个反斜杠就可以了。这里的 1.2 表示后面的字符(_)向上移动 1.2 个字符大小的距离。

{/Symbol abc}abc

这里第一个花括号里的 abc 使用了 Symbol 字体,而后面括号外的 abc 使用的是默认字体。注意字体名称前的斜杠方向。这里我们看到,Symbol 字体里的英文字母对应显示的是希腊字母。Symbol 字体里还包括了一些其它符号,下面是完整的 Symbol 字体列表:

上面图中显示的是Symbol字体对应的16进制代码。例如上面例子中的希腊字母αβχ,对应的16进制代码分别为 61、62、63,转换为8进制代码就是 141、142、143。在 gnuplot 里,我们可以直接用字符的8进制代码表示这个字符,所以我们也可以用{/Symbol \141\142\143}来表示αβχ。根据上面的内容,下面是一个综合起来的例子:gnuplot> set term wxt enhancedgnuplot> set xlabel "X"gnuplot> set ylabel "Y"gnuplot> set xrange [0:10]gnuplot> set xtics 0,1,10gnuplot> unset keygnuplot> set title "f(x) = {/Symbol=16 \326}~{x^@3}{1.1{/Symbol=16 \276}}&{aa}函数图像"gnuplot> plot sqrt(x**3)

虽然利用 enhanced 模式也能显示一些简单的数学表达式,但是对于稍微复杂一点的公式来说,显示效果无法令人满意。要在gnuplot里显示数学公式,终极方案还是要用 LaTeX。

linux中gnuplot给定文本,Gnuplot (三)输出图片/字体支持、eps/png/pdf/enhanced文本相关推荐

  1. Linux中创建Daemon进程的三种方法

    Linux中创建Daemon进程的三种方法 什么是daemon进程? Unix/Linux中的daemon进程类似于Windows中的后台服务进程,一直在后台运行运行,例如http服务进程nginx, ...

  2. Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  3. Linux中设置服务自启动的三种方式(转)

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  4. 浅谈Linux中的信号处理机制(三)

    一晃眼,已经到9月底了,都来不及去感慨时间匆匆.最近常常会想明年的今天我将会在那里干着什么样的工作?对未来又是憧憬又是担忧,压力山大.无论如何现在还是踏踏实实的学习吧,能这样安安静静学习的日子也不多了 ...

  5. Linux中增加软路由的两种方法,Linux中增加软路由的三种方法

    # route add –net IP netmask MASK eth0 # route add –net IP netmask MASK gw IP # route add –net IP/24 ...

  6. linux获取网络摄像头视频教程,在Linux中读取USB网络摄像头的输出

    我在C中用fread和fwrite进行了一些实验,所以我在C中写了这个小程序,从网络摄像头获取数据并将其转储到一个文件中.以下是来源: #include #include #define SIZE 3 ...

  7. linux 运行apj,Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  8. linux中的进程有哪三种基本状态,Linux下的进程有哪三种状态?()

    1.R (TASK_RUNNING)状态,可执行状态. 只有在该状态的进程才可能在CPU上运行.而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CP ...

  9. Linux 中设置环境变量的三种方法

    1.export 变量名=value 2.变量名=value ; export 变量名 3.declare -x 变量名=value 自定义全局环境变量 1.编辑 /etc/profile vim / ...

  10. 【export】Linux中export命令介绍,三种方法设置环境变量

    ✨ 因为一个变量创建时,它不会自动的被在它之后创建的shell进程所知:这时,可用export命令向后面的shell传递变量的值.

最新文章

  1. 容器环境红队手法总结
  2. 常用的webservice接口
  3. 曾经用过的Sql Server分页方法小结
  4. Atitit hsv转grb  应该优先使用hsv颜色原则 方便人类
  5. python优雅写法
  6. jQuery中的slideUp()、slideDown()、hide()、show()
  7. Facebook提升性能的一大法宝:HipHop
  8. 射影几何笔记5:齐次坐标(Homogeneous coordinates)
  9. ROS知识【7】:ubuntu环境如何卸载ROS
  10. 计算机专业去广发银行,2019广发银行招聘计算机模拟试题
  11. 一本通网站 1378:最短路径(shopth)
  12. java 弹幕游戏_java弹幕小游戏1.0版本
  13. java格林尼治时间_Java日期时间使用总结
  14. 隐形眼镜的评价分析报告
  15. 独立显卡跟集成显卡有什么差别?
  16. 罗丹明PEG罗丹明,RB-PEG-RB
  17. ArcGIS中的坐标系
  18. 海思3519A开发板设置脚本开机自启方法
  19. 【网络工程师】<软考中级>网络互联与互联网
  20. 用CPU-Z查看内存插槽个数与频率

热门文章

  1. #bfs#[luogu 2873] [USACO07DEC]泥水坑Mud Puddles
  2. BUUCTF [WUSTCTF2020]alison_likes_jojo
  3. 《植物大战僵尸(PC)》游戏评测
  4. bshare分享 插件使用教程
  5. cd/etc 文件目录浅解
  6. windows如何调出不见的语言栏
  7. [附源码]java毕业设计政府公用车辆管理系统
  8. CSS学习18:CSS选择器二
  9. win7计算机属性资源管理器停止工作,win7系统windows资源管理器已停止工作的解决方法...
  10. Surrogate mother是代孕妈妈,那么,Surrogate parent呢?