科学网

 找回密码
  注册

tag 标签: Gnuplot

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

谈谈gnuplot(三十三):table 输出
热度 1 yusufma 2011-12-28 10:03
gnuplot 作为一个绘图软件,一般都是读取数据,把图像输出到指定的 terminal 。但是 gnuplot 也可以把图像以 table 形式存储到一个数据文件中。这样做的好处是方便我们对图像数据进行进一步处理,得到我们想要的效果。我们之前画等高线图所用的 surface.dat 文件,其实就是通过这种方式得到的。 还以 surface.dat 数据的等高线图为例, contour 模式只能在 splot 命令中使用。如果我们把等高线图预先以 table 格式存入一个文件,我们就可以对其进行适当处理,并且可以用 plot 命令绘图: gnuplot set contour base gnuplot unset surface gnuplot set table 'cont.dat' gnuplot splot 'surface.dat' gnuplot unset table gnuplot unset key gnuplot set size square gnuplot set xrange gnuplot set yrange gnuplot plot 'surface.dat' with image, 'cont.dat' with lines lw 1.5 lc rgb 'yellow' 这里我们预先把等高线图以 table 格式存入了 cont.dat 文件,随后用 plot 命令调用该文件,把等高线画在了 surface.dat 数据的 image 图上(注意:不是 pm3d 图)。这里我们可以用 plot 命令的图线风格参数控制等高线的粗细和颜色。 这里我们没有像以前那样用不同颜色区分等高线,而是所有等高线使用了同一颜色。那么怎样区分各个等高线呢?我们可以用 label 标注等高线数值。 label 的使用方法我们在 第十五讲 里介绍过,但是直接手动设置 label 有点麻烦。下面这个网页里的 label_contours.awk 文件是一个 AWK 脚本文件,可以帮助我们自动设置标签: http://gnuplot.sourceforge.net/scripts/index.html#tricks-here 我们这里不打算介绍 AWK 脚本语言,也不打算介绍这个脚本的具体使用方法,因为该网页以及该文件内已经包含了详细的使用说明。我们只给出一个使用该脚本得到的带标注的等高线图:
个人分类: 开源软件|6663 次阅读|1 个评论
谈谈gnuplot(三十一):等高线图
热度 3 yusufma 2011-12-22 03:33
等高线图是另一类重要的 3D 绘图方式。为了说明 gnuplot 里面等高线图的绘制方法,我们使用下面这个数据文件作为例子: surface.dat 首先绘制普通曲面图: gnuplot set hidden3d gnuplot splot "surface.dat" with lines 下面加上等高线: gnuplot set contour base gnuplot splot "surface.dat" with lines title "" set contour 命令之后除了 base 参数外,还可以使用 surface 或 both 参数,分别表示等高线画在底面、曲面或者两者都画。这里设置了一个空的 title ,是为了在图例中不要显示文件名,以免和等高线的图例混淆。 如果我们想在平面中显示等高线,可以使用下列命令: gnuplot unset surface gnuplot set view map gnuplot set size square gnuplot replot 如果我们想在之前提到过的 pm3d 图上显示等高线,可以这样做: gnuplot set pm3d at b gnuplot set key at screen 0.8,0.8 gnuplot replot 这里我们把图例的位置做了调整,因为默认图例是在图像里面的,这样可能影响我们的图像显示。 最后,我们谈谈怎样手动设置等高线数值和间距。等高线的数值间隔参数设置命令是 set cntrparam levels 。默认情况下,gnuplot 自动设置等高线数值。如果要进行手动设置,有两种方法: incremental start,incr,end 设置起始值以及间隔大小,这种方法适用于等间隔的等高线; discrete z1,z2,z3,… 分别设置各个等高线数值,这种方法适用于间隔不等的等高线。 例子: gnuplot set cntrparam levels incremental -2,0.5,2 gnuplot replot
个人分类: 开源软件|17469 次阅读|9 个评论
谈谈gnuplot(二十九):色板(palette)设置
yusufma 2011-12-13 03:51
pm3d 绘图默认的色板看起来很不错,但是我们有时候还是希望能自己定义不同的色彩,这次我们谈谈怎样自定义色板。 自定义色板的方式有好多种,我们这里只谈一下比较方便常用的方式:用 rgbformulae 定义 RGB 色彩。 RGB 是电脑中最常用的色彩空间表示方式,而 rgbformulae 是一系列从数值到色阶的数学映射公式,共有 37 个。如果想知道 rgbformulae 到底包含哪些公式,可以使用 gnuplot 命令: show palette rgbformulae 由于 RGB 有三个颜色通道,所以每一个色板需要三个公式,分别表示 R(Red)、G(Green)、B(Blue)。色板的设置方法为: set palette rgbformulae r,g,b 其中 r, g, b 分别表示 R, G, B 通道所用公式代码(0 到 36,允许用负值)。gnuplot 默认色板的公式代码为 7,5,15。 37 个公式加上负值共有 73 3 个不同的组合方式,并不是每个组合都有好的显示效果,而我们仅凭想象力是无法知道效果好坏的。这时候, test palette 命令可以帮助我们预览一下显示效果。即使如此,找到一个好的色板设置组合并不是一件很容易的事情。下面这些常用的组合可以给我们提供一些帮助: 7,5,15 (pm3d 默认) 3,11,6 (绿—红—紫) 23,28,3 (绿—蓝—白) 21,22,23 (黒—红—黄—白) 30,31,32 (黑—蓝—紫—黄—白,可以用于黑白打印) 33,13,10 (彩虹色) 22,13,-31 (另一种彩虹色) 34,35,36 (黒—红—黄—白) 最后,如果我们不想用彩色,而只是想用黑白灰度,可以用下面的命令: set palette gray
个人分类: 开源软件|12169 次阅读|0 个评论
谈谈gnuplot(二十六):数据文件存储格式
yusufma 2011-12-2 02:16
在 3D 数据绘图之前,我们先谈谈 gnuplot 数据文件的存储格式。为什么在 2D 绘图时我们没有涉及这个问题呢?因为 2D 绘图数据相对简单,只要有 x 和 y 两列数据就可以了。而 3D 绘图数据量成平方增长,数据存储方式也更多样化。 gnuplot 的数据可以以纯文本或者二进制方式存储。之前我们在 2D 绘图中均使用纯文本方式存储数据,这样的好处是简单直观,把数据按照 x 和 y 存为两列就可以了。在 3D 情况下,由于数据量激增,纯文本文件所占空间较大,读写速度也较慢,所以很多时候用二进制存储数据更方便。无论纯文本还是二进制,存储数据的方式都不是唯一的,我们这里只介绍最常用的方式。 (一)纯文本格式: 2D 的情况我们已经很熟悉了,这里说说 3D 的情况。3D 情况下, x, y, z(x,y) 可以按照下面格式存储: x0 y0 z0,0 x0 y1 z0,1 x0 y2 z0,2 ... ... ... x0 yN z0,N x1 y0 z0,0 x1 y1 z0,1 ... ... ... 这里有几个要点: 每行存储 x, y, z 三个数据 首先保持 x 不变,让 y 逐行变化 当 y 遍历 取值范围后,x 取 里的下一个值,重复过程2 每个相同 x 取值的数据块之间,保留一个空行(这个比较容易忽视,需要注意) 然后就可以用 splot 命令绘制 3D 数据图了。 (二)二进制格式: 假设有 NxM 个数据(z值),数据逐行按照从左到右、从上到下的顺序存储在二进制文件中,这时候绘制数据文件的命令为: plot 'filename' binary 二进制参数列表 splot 'filename' binary 二进制参数列表 可能有人会问,绘制 3D 数据不是用 splot 吗?为什么这里还会用 plot ?我们暂且忽略这个问题,来看看二进制参数列表。 二进制文件只是一个数据流,gnuplot 可不知道我们数据的具体存储方式,这需要我们通过各个参数告诉 gnuplot。下面是一些常用参数: array=(N,M) 这是告诉 gnuplot 我们数据中 x 和 y 各自的维数 format 我们的数据是16位还是32位?是整型还是浮点数? format 参数负责告诉 gnuplot 这些信息。我们可以通过执行下面的命令: show datafile binary datasizes 来获得 format 参数的数据类型列表。 endian 对于多字节数据,一般有两种不同的字节存储顺序: big 或者 little 。如果您试图绘制一个二进制数据,而结果看起来莫名其妙,很可能就是 endian 设置错了。 dx, dy, dz 这其实就是 Δx, Δy, Δz,也就是各个坐标的比例系数。例如设置 dx=2 ,而数据文件中 x 的取值范围是 ,那么所绘图像上 x 的取值范围就会变为 。 下面是一个绘制二进制数据的例子: splot "datafile.bin" binary array=(64,64) endian=little format="%float" with lines
个人分类: 开源软件|9112 次阅读|0 个评论
谈谈gnuplot(二十三):误差条(error bar)
热度 2 yusufma 2011-11-8 02:52
Error bar 是在图像上表现数据误差范围的一种方式。对于含有误差项的数据,除了通常的 x 轴和 y 轴两列数据外,我们还需要有额外的误差数据列。 拿 x 数据列举例,如果误差用标准差 σ x 来表示,那么数据取值范围可以表示为 ,这时候只要增加一列误差项就行了,所以一共需要 3 列数据。如果误差用最小值 x min 和最大值 x max 来表示,那么数据取值范围可以表示为 ,这时候需要增加两列误差项,所以一共需要 4 列数据。对于 y 数据误差,表达方法和 x 类似。如果同时包含 x 和 y 误差,就需要把两者结合起来。 在 gnuplot 里,error bar 的基本使用方法是: plot "数据文件名" using using参数 with xerrorbars | yerrorbars | xyerrorbars using 命令在之前的“ 多组数据绘图 ”博文里已经介绍过,目的是选择哪些列数据进行绘图,数据列数必须和后面选择的绘图方式对应。 with 命令后面跟的是绘图方式,选择用 xerrorbars , yerrorbars ,还是 xyerrorbars 。根据不同绘图方式,所需数据列数分别为: xerrorbars 3 列: x y σ x 4 列: x y x min x max yerrorbars 3 列: x y σ y 4 列: x y y min y max xyerrorbars 4 列: x y σ x σ y 6 列: x y x min x max y min y max 下面我们举一个例子,这是一个测量在液体中聚焦的脉冲激光在焦点处产生气泡几率的实验,数据文件(probability.dat)如下: ### 文件开始 ### # Ave Energy Probability Min Energy Max Energy Energy SD # (micro J) (%) (micro J) (micro J) (micro J) # ======================================================================= 9.08 0 8.96 9.15 0.06 10.00 2 9.91 10.08 0.05 10.52 3 10.41 10.60 0.06 11.03 10 10.90 11.11 0.06 11.52 25 11.38 11.62 0.07 12.03 57 11.90 12.13 0.07 12.52 88 12.38 12.64 0.08 13.01 93 12.86 13.09 0.07 13.51 100 13.38 13.61 0.08 14.52 100 14.38 14.67 0.08 ### 文件结束 ### x 轴数据为激光能量,y 轴数据为气泡产生几率,这里只有 x 误差,并且同时包含了最小最大值和标准差。我们现在用最小最大值画图: gnuplot set xrange gnuplot set yrange gnuplot unset key gnuplot set xlabel "Laser Pulse Energy (μJ)" gnuplot set ylabel "Bubble Formation Probability (%)" gnuplot plot "probability.dat" using 1:2:3:4 with xerrorbars 如果既要画 error bar,又要连线,可以把上述命令中的 errorbars 换为 errorlines : gnuplot plot "probability.dat" using 1:2:3:4 with xerrorlines
个人分类: 开源软件|28188 次阅读|4 个评论
谈谈gnuplot(二十二):参数方程
yusufma 2011-11-5 05:35
gnuplot 也能画参数方程。首先设置参数方程环境: gnuplot set parametric 然后我们会看见返回信息: dummy variable is t for curves, u/v for surfaces 和极坐标类似,参数方程的自变量也是 t 。后面的 u/v 是用于 3D 绘图的参数方程自变量,我们目前暂时不管它。 对于参数方程 x = f(t), y = g(t) ,绘图命令为 plot f(t),g(t) 下面我们看一个例子,这是一个李萨如(Lissajous)曲线: gnuplot set parametric gnuplot set xrange gnuplot set yrange gnuplot set trange gnuplot set samples 1000 gnuplot set size square gnuplot unset key gnuplot plot sin(3*t),sin(4*t) lw 2
个人分类: 开源软件|6275 次阅读|0 个评论
谈谈gnuplot(十八):图例
热度 1 yusufma 2011-11-1 02:33
在同一图像中包含多组数据或函数时,图例是必要的。我们这一次谈一谈图例的微调。 这次来画前 3 阶的第一类贝塞尔函数 J n (x) 。在 gnuplot 里,0 阶和 1 阶贝塞尔函数已经定义了,分别为 besj0(x) 和 besj1(x) ,而 2 阶贝塞尔函数可以通过递推关系构造出来。下面是例子: gnuplot set term wxt enhanced gnuplot besj2(x) = besj1(x)*2/x - besj0(x) gnuplot set xrange gnuplot set xtics 2 gnuplot set xlabel "X" gnuplot set ylabel "Y" gnuplot set title "Bessel Functions of the First Kind" gnuplot set grid gnuplot set style line 1 lw 2 lc rgb "#F62217" gnuplot set style line 2 lw 2 lc rgb "#D4A017" gnuplot set style line 3 lw 2 lc rgb "#2B60DE" gnuplot plot besj0(x) ls 1 t "J_0(x)", besj1(x) ls 2 t "J_1(x)", besj2(x) ls 3 t "J_2(x)" 之前我们讲过, plot 命令后面可以跟随一些参数(例如 linewidth , linecolor 等)来改变点线风格。在上面的例子中,我们把这些参数单独拿出来放到了 set style 命令里,定义了三个 linestyle ,然后在 plot 命令里再调用这些 linestyle 。这样子做和我们之前的做法效果上没什么不同,唯一的区别是让 plot 命令短了一些。另外,改变风格可能容易一点。 上面是默认的图例,下面让我们进行微调。 为图例加上边框 gnuplot set key box gnuplot replot 改变图例显示位置 gnuplot set key center at 10,0.7 gnuplot replot 把图例的 title 和图线示例调换位置 gnuplot set key reverse gnuplot replot 调整图例边框宽度 width (或高度 height ) gnuplot set key width 1 gnuplot replot 调整 title 文字对齐方式( Left 或者 Right ,注意首字母大写) gnuplot set key Left gnuplot replot 调整图例行间隔 gnuplot set key spacing 1.2 gnuplot replot 调整图线示例长度 gnuplot set key samplen 2 gnuplot replot 这些并不是 set key 的全部参数。在 gnuplot 里,如果想深入了解任何命令的详细用法,不要忘记使用 help 命令。
个人分类: 开源软件|21581 次阅读|1 个评论
谈谈gnuplot(十七):边框和坐标轴
yusufma 2011-10-31 12:02
我们现在所有绘图的坐标刻度均标在图像边框上,无论上下左右。这样做的好处是函数或数据图线清楚,不会和坐标标注混在一起。其实,我们小时候数学课上最早学习坐标系的时候,都是让 X 轴和 Y 轴正交于原点,而刻度标注在坐标轴上。这样的图像在定性表现函数关系,尤其有一定对称性的函数关系时,比较一目了然。 让我们来看看怎样用 gnuplot 得到这样的效果。 用 unset border 命令把边框去掉; 用 set zeroaxis 命令画出正交于原点的坐标轴; 在设定坐标刻度时加上 axis 参数,这样刻度会出现在坐标轴上面,而不是边框上。 为了避免审美疲劳,这次我们拿高斯函数举个例子: gnuplot set term wxt enhanced font "Times New Roman,16" gnuplot gauss(x) = exp(-pi*x*x) gnuplot set title "函数 e^{-πx^2}" gnuplot set samples 500 gnuplot set xrange gnuplot set yrange gnuplot unset key gnuplot unset border gnuplot set zeroaxis lt -1 lw 2 gnuplot set xtics axis -2,1,2 gnuplot set ytics axis 0,1,1 gnuplot plot gauss(x) lw 3 例子中的参数前面都介绍过,如果不记得了,可以复习一下“ 坐标取值范围及刻度 ”和“ 点线风格 ”等章节。这里的图像已经很像模像样了,除了标签位置还不那么理想,而且坐标轴没有箭头。幸好,我们上一讲刚刚谈到过箭头,下面来试试做一下微调: gnuplot set title "函数 e^{-πx^2}" offset 12,-5 gnuplot set xtics axis -2,1,2 offset 0.4,0 gnuplot set ytics axis 0,1,1 offset 0,0.4 gnuplot set arrow 1 from 2,0 to 3.2,0 filled size 0.2,15,60 lw 2 gnuplot set arrow 2 from 0,1 to 0,1.22 filled size 0.2,15,60 lw 2 gnuplot set rmargin 4 gnuplot set label 1 "X" at 3.0,-0.1 gnuplot set label 2 "Y" at -0.3,1.2 gnuplot replot 这里有几个命令同时用到了新的参数: offset 。它的作用就是把命令里提到的标签文字平移一段距离。在这里, offset 默认的坐标系统是 character 。我们慢慢会体会到这种做法的好处,它使得我们很多时候改变字体大小,而不必重新设置 offset 。 另外, set rmargin 命令用于设置图像右边空白宽度,单位也是 character 。一般情况下,四边空白宽度都是自动设置的。现在我们在右边增加了箭头,而绘图显示区域不会因此自动扩大,这样会导致箭头无法完整显示,所以要手动改一下设置。相应的,上、左、下边的空白宽度,分别由 tmargin , lmargin , bmargin 参数控制。
个人分类: 开源软件|21069 次阅读|0 个评论
谈谈gnuplot(十五):gnuplot 的坐标系统及标签
热度 1 yusufma 2011-10-28 07:10
我们现在知道了 gnuplot 有第一( first )和第二( second )两套坐标系统,但是 gnuplot 的坐标系统还不止于此。除此之外,它还有 graph , screen 和 character 三套坐标系统。 graph 和 screen 都是归一化的坐标系统。 graph 以坐标轴包围区域为界,左下角为 0,0 ,右上角为 1,1 ; screen 以整个图片区域为界,左下角为 0,0 ,右上角为 1,1 。 character 顾名思义,是以字符大小为单位长度的坐标系统,因此它的单位长度依赖于字体大小。它的原点位置和 screen 相同。 下面我们结合 label 命令来了解一下这几个坐标系统。我们之前讲过 xlabel 和 ylabel 。而这里的 label 命令,是在图中任何地方插入文字标签。还是来看例子: gnuplot sinc(x) = sin(pi*x)/(pi*x) gnuplot set xlabel "X" gnuplot set ylabel "Y" gnuplot unset key gnuplot set samples 500 gnuplot set xrange gnuplot set xtics 1 gnuplot set x2range gnuplot set x2tics 1 gnuplot set y2range gnuplot set y2tics 1 gnuplot set grid gnuplot set label 1 "Hello first" at 2,0.5 gnuplot set label 2 "Hello second" at second 2,0.5 gnuplot set label 3 "Hello graph" at graph 0.2,0.5 gnuplot set label 4 "Hello screen" at screen 0.2,0.5 gnuplot set label 5 "Hello character" at character 10,5 gnuplot plot sinc(x) 这里我们画一个 sinc 函数图像。为了说明问题,我们把第二坐标系也都标示了出来,虽然函数图像并没有用到第二坐标。其他命令前面都讲过了,这里只看五个 set label 命令。 set label 之后紧跟的那个整数,就是一个标识符,用以区别各个 label ,可以随便选个整数。在字符串之后, at 参数指定标签坐标。默认为 first 坐标系统,也可以使用其它坐标系统。下面是生成的图片: 为了帮助大家理解,我们把 graph 和 screen 各自的坐标区域分别用绿色和橙色表示了出来。 标签文字的默认对齐方式为居左,也就是指定的坐标位置在文字的左边。我们也可以在 label 命令里选择其他对齐方式。除此之外,我们还可以在 label 命令里指定文字颜色,旋转文字,或者在指定坐标位置处加一个点。下面例子中的每个参数不必一一解释了,因为和我们前面接触过的命令都是一致的: gnuplot set label 1 "Hello red left" at 2,0.4 left textcolor rgb "#FF0000" gnuplot set label 2 "Hello green center" at 2,0.5 center textcolor rgb "#00FF00" gnuplot set label 3 "Hello blue right" at 2,0.6 right textcolor rgb "#0000FF" gnuplot set label 4 "Hello rotate" at -2,0.4 rotate by 45 gnuplot set label 5 "Hello point" at -3,0.2 point pt 7 lc rgb "#FF9900" gnuplot replot
个人分类: 开源软件|13066 次阅读|1 个评论
谈谈gnuplot(十三):栅格以及方程数值解估算
yusufma 2011-10-26 03:18
我们现在来画一个 0 阶贝塞尔函数 J 0 (x) : gnuplot set term wxt enhanced gnuplot set xlabel "X" gnuplot set ylabel "Y" gnuplot set xrange gnuplot set xtics 0,1,10 gnuplot unset key gnuplot set title "0阶贝塞尔函数 J_0(x)" gnuplot plot besj0(x) 这里的 besj0(x) 就是 gnuplot 里面预定义的 0 阶贝塞尔函数。如果现在请您从这个图上估计出 内 J 0 (x) 的零点数值,也就是方程 J 0 (x)=0 的解,恐怕您很难说的准确。但是如果为这个图加上栅格( grid ),就容易多了: gnuplot set grid gnuplot replot 这时我们很容易估计出三个零点的数值: 2.4, 5.5, 8.6 。通过查表我们可以知道,这三个零点比较精确的数值分别为 2.4048, 5.5201, 8.6537 。这和我们的估计值差不太多。如果我们想更精确的估计数值,可以尝试改一下 xrange : gnuplot set xrange gnuplot set xtics 8,0.1,9 gnuplot replot 这相当于把图像在零点附近放大了。把鼠标放在画图区域,画图框左下角就会显示出鼠标所在位置的坐标。现在我们把鼠标放在函数图线和 X 轴的交叉点上,左下角显示的横坐标为 8.65243 ,这和我们查表所得的数值更接近了。 如果想进一步让结果精确一些,我们可以利用 gnuplot 的计算功能。我们可以通过尝试计算的方法获得方程的数值解: gnuplot print besj0(8.65) 0.00101216621937318 gnuplot print besj0(8.66) -0.0017019446057587 gnuplot print besj0(8.6537) 7.5770361108123e-06 gnuplot print besj0(8.6536) 3.47225104115535e-05 gnuplot print besj0(8.6538) -1.95681245811775e-05 所以在 8.6 附近, J 0 (x)=0 精确到小数点后 4 位的数值解为 8.6537 ,这和我们查表的结果一模一样。由于我们已经通过图像知道了数值解的大概位置,再加上合理利用线性插值,我们可以很快得到精确的结果。
个人分类: 开源软件|6958 次阅读|0 个评论
谈谈gnuplot(十一):enhanced 文本模式
热度 2 yusufma 2011-10-22 03:46
我们之前的图像里的 title 、 xlabel 等标签里用到的都是纯文本字符串,如果我们希望输出稍复杂一点的文字标签,例如字母加角标,我们可以使用 enhanced 文本模式。 gnuplot 里面好多 terminal 都支持 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 enhanced gnuplot set xlabel "X" gnuplot set ylabel "Y" gnuplot set xrange gnuplot set xtics 0,1,10 gnuplot unset key gnuplot set title "f(x) = {/Symbol=16 \326}~{x^@3}{1.1{/Symbol=16 \276}}{aa}函数图像" gnuplot plot sqrt(x**3) 虽然利用 enhanced 模式也能显示一些简单的数学表达式,但是对于稍微复杂一点的公式来说,显示效果无法令人满意。要在gnuplot里显示数学公式,终极方案还是要用 LaTeX。
个人分类: 开源软件|23591 次阅读|5 个评论
谈谈gnuplot(九):输出 eps 图片
热度 1 yusufma 2011-10-20 02:33
到目前为止,我们所有的gnuplot作图都只是输出到电脑屏幕上。如果要在我们的文档里使用这些图片,我们必须把它们以某种文件格式存储下来。前面已经介绍过,gnuplot里面控制图像输出方式的命令是 terminal 。我们这次就讲一下如何把图片输出为 eps 文件。 之所以首先选择 eps ,是因为大量科学技术文档使用 LaTeX 来编辑排版,而 eps 是 LaTeX 最常用的图片格式,支持高质量的矢量图形,并且可以方便的转换为 pdf 、 svg 等其他常用格式。 首先,让我们看看如何设置 terminal 。在gnuplot里输入下面的命令: gnuplot set terminal postscript eps 这里的 terminal 其实是 postscript ,而 eps 是作为 postscript 的一个参数。这并不奇怪,因为 eps 本来就是 postscript 衍生出来的。输入这个命令之后,gnuplot会自动返回下面的信息: 这里给出了一些默认的其它参数。gnuplot下的每一个 terminal 所带的参数不完全相同,一些参数只针对某一 terminal 。我们只需要知道一些常用 terminal 的常用参数,而其它的 terminal 和参数,我们可以在使用的时候通过 help 命令查询。现在我们暂且不管这些参数,先画一个图试试。还是用我们上次用过的降水量数据文件: gnuplot set xlabel "Month" gnuplot set ylabel "Precipitation (mm)" gnuplot set xrange gnuplot set xtics 1,1,12 gnuplot 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 output gnuplot set term wxt 这里我们没有使用中文标签,因为在 postscript 使用中文字体并不容易。以后我们会介绍如何绕过这个障碍。 第五行有一个新命令: set output 。这没什么多说的,就是指定输出文件的文件名。第七行还有一个 set output ,但是后面没有跟任何文件名。这其实是告诉gnuplot,这个文件已经输出完毕,可以关闭了。另外也可以用 unset output ,其实是相同作用。之所以这么做,是因为有些 terminal 支持多页文件,所以在画完图之后,gnuplot并不自动关闭文件,等待你输入下一页内容,除非你手动关闭,切换 terminal ,或者退出gnuplot程序。 最后,别忘了把 terminal 切换回屏幕显示,这样可以避免一些意想不到的事情发生。注意:我们又用缩写了! 下面让我们来看看生成的 eps 文件吧: 这个图像可能并不是我们想要的。有几个地方我们想要修改一下: 这个图是黑白的!我们想要彩色图。 有一组连线是虚线。这也难怪,黑白图如果不用虚线,还真分辨不出来。但我们想要彩色实线。 让直线稍微加粗一点。 标签文字显得小了些,我们想要大一点的字体。 我们来重新画一下这个图: gnuplot set terminal postscript eps color solid linewidth 2 "Helvetica" 20 gnuplot set output "precipitation-color.eps" gnuplot replot gnuplot set output gnuplot set term wxt 这里我们用 color 参数表示我们要彩色图, solid 表示我们要实线不要虚线, linewidth 参数指定 2 倍线宽,而最后指定使用 Helvetica 20 号字体。让我们来看看新生成的 eps 文件: 这里的字体为 postscript level 2字体,共有35种。除了 Helvetica ,常用的还有 Times-Roman 。如果硬要多记两个字体名字,就记住 Courier 和 Symbol 吧。 Courier 是编程时常用的等宽字体,而 Symbol 字体可以用来显示希腊字母。如果你实在好奇还有哪些其它字体,可以看看下面的网页链接: http://xfig.org/userman/attributes.html#font-panel
个人分类: 开源软件|26714 次阅读|2 个评论
谈谈gnuplot(六):简单数据绘图
yusufma 2011-10-17 14:51
之前讲过了简单的函数绘图,而实际科研中更多用到的是数据绘图。 在讲如何用gnuplot进行数据绘图之前,我们先介绍一个gnuplot里最有用的命令: help 。 gnuplot内含一个非常有用的帮助系统。随着我们学习的命令越来越多,记住所有命令的用法不太现实,所以我们会更多的依赖这个帮助系统。例如,我们想知道 set xtics 命令的用法,只要在gnuplot里输入: gnuplot help set xtics 就能得到完整的 set xtics 用法及实例。 好了,下面我们讲数据绘图。首先介绍我们的数据文件。这是一个关于北京市一年中每月平均降水量的数据,我们的数据以纯文本方式储存在文件名为 datafile.dat 的文件中,文件全文如下: ### 文件开始 ### # 北京月平均降水量 (mm) # # 月份 降水量 # ============== 1 2.5 2 5.1 3 10.2 4 25.4 5 27.9 6 71.1 7 175.3 8 182.9 9 48.3 10 17.8 11 5.1 12 2.5 ### 文件结束 ### 数据分为两列,第一列为月份,第二列为降水量。以 # 符号开始的各行为注释,也就是说,这些行对绘图不构成任何影响。下面开始画图。 gnuplot set xlabel "月份" gnuplot set ylabel "降水量(毫米)" gnuplot set title "北京市月平均降水量" gnuplot unset key gnuplot set xrange gnuplot set xtics 1,1,12 gnuplot plot "datafile.dat" 这里我们看到,默认的数据作图是画出各数据点。如果我们希望得到数据连线呢?可以使用下面的命令: gnuplot plot "datafile.dat" with lines with 命令后面跟的是画图方式,这里使用的是 lines 方式,也就是把各个数据用直线连接起来。gnuplot大约支持三十种画图方式,默认为 points 方式,我们以后会选择一些常用的方式来介绍。 现在问题来了:如何既得到连线,又得到数据点呢?对了,用 with linespoints : gnuplot plot "datafile.dat" with linespoints 好了,我们已经有一个简单的数据图了。下次我们想办法让它看起来更漂亮一些。
个人分类: 开源软件|12393 次阅读|0 个评论
谈谈gnuplot(三):数学表达式
yusufma 2011-10-14 01:38
在我们开始画图之前,需要知道gnuplot里面是如何表达数学公式的。 加、减、乘、除、乘方 分别用 + , - , * , / , ** 表示 整数和浮点数 和C语言类似,gnuplot对整数和浮点数(实数)区别对待,整数的运算结果还是整数。所以在处理整数除法时要尤其小心,例如7/2的结果是3而不是3.5 复数 gnuplot支持复数运算,复数用包含在花括号内的一对实数表示,例如 {3,5} 表示 3+5i 数学函数 gnuplot含有丰富的数学函数,格式和C语言几乎相同。对于实数和复数,函数名是一样的。下面的链接可以看到预定义的函数列表: http://www.gnuplot.info/docs_4.2/gnuplot.html#x1-5300013.1 自定义函数 自定义函数很容易,例如 f(x)=x+1 定义一个一元函数, f(x,y)=x+y 定义一个二元函数。 π(圆周率) π 在gnuplot里用 pi 表示。 这里是一些例子: 这里用到了 print 命令,就是把结果输出到屏幕上。 有了这些知识做准备,我们就可以正式开始画图了。
个人分类: 开源软件|9990 次阅读|0 个评论
谈谈gnuplot(二):启动
热度 1 yusufma 2011-10-13 02:48
谈谈gnuplot(二):启动
gnuplot是基于命令行的交互式绘图软件。打开一个终端,输入gnuplot,随着程序启动,会出现下面的信息: (如果是在Windows电脑上,双击gnuplot.exe后会自动打开一个命令行窗口) 这里包含gnuplot的版本、系统、版权等信息。最关键的是最后一条: Terminal type set to 'wxt' 什么是terminal?在gnuplot中, terminal 就是说你打算用什么方式输出图片。这里默认的 terminal 是 wxt ,也就是直接输出到电脑屏幕上。gnuplot支持七十多种 terminal ,没必要都记住。我们以后会挑主要的几种讲一下。 提示信息之后,是gnuplot的提示符: gnuplot 在提示符之后输入各种命令,就可以开始画图了。 如果要退出程序,只需要输入 quit 或者 exit 命令。
个人分类: 开源软件|6805 次阅读|1 个评论
谈谈gnuplot(一):安装
热度 6 yusufma 2011-10-12 08:45
gnuplot 是一个小巧实用的数据处理工具,主要用来绘制2D/3D的数据或者函数图像,但是也包含数学计算、拟合等功能。虽然它的名字里有个“gnu”,但是它和大名鼎鼎的 GNU 没什么关系,使用的授权协议也不是GNU GPL,所以这里的“gnu”是小写,全名应该读作“new plot”。 所有的主流Linux发行版都包含gnuplot,因此在Linux上安装很简单,只要用各相应发行版的软件安装工具直接安装就可以了。 在苹果电脑上的安装也不复杂。 MacPorts项目 把很多Linux上的应用程序移植到了苹果系统上,其中就包括gnuplot。只需要在苹果电脑上安装MacPorts,之后就能通过port命令安装包括gnuplot在内的各种Linux应用程序了。 在Windows下,可以直接到 gnuplot在sourceforge的下载网页 下载最新版本(文件名包含win32的那个),解压之后到binary目录里找到gnuplot.exe直接执行就可以了。
个人分类: 开源软件|10981 次阅读|10 个评论
Gnuplot 常用绘图功能简单介绍
realymylove 2011-9-10 14:15
最近为了学习一个软件,机器总是跑在Linux下,却意外的发现了一些很好的软件,Gnuplot就是其中一个。Gnuplot是一个强大的命令式科学绘图程序。最早于1986 年由 Colin kelley 和 Thomas Williams 所开发,后来的许多参与者都在为不同的“终端”创建变种方面做出了贡献。Gnuplot可以将数学函数或数据绘制成2D或3D的图形。最为重要的是,Gnuplot 是一种免费的绘图工具,而且可以在各种操作系统中使用。这意味着,在科学绘图或者数据拟合等一般需求时,我们不必再为经济问题而使用盗版的Matlab,Gnuplot完全可以满足我们的基本需求。 一、Gnuplot的下载及安装 1.官方网站下载软件包,自行安装 http://www.gnuplot.info/index.html。 Gnuplot的官方网站虽做得比较简单,但其提供了各种操作系统下的软件版本,而且官方网站还提供了各种教程、使用经验、论坛等内容的链接,在下载软件的同时我们还可以得到许多使用的帮助,所以推荐大家到官方网站上下载Gnuplot,顺便浏览下官方网站的各个板块。 2.Fedora 下在线安装 #yum install gnuplot 或者使用Fedora 的软件安装与卸载工具搜索Gnuplot ,下载、安装Gnuplot。 3.Ubuntu 下在线安装 #apt-get install gnuplot 或者使用Ubuntu 的软件中心搜索Gnuplot ,下载、安装Gnuplot。 4.Windows 下安装时只需从官方网站上下载win32的zip压缩包,将其解压缩,释放到本地硬盘的某个目录里即可。 二、Gnuplot 的运行 1.Linux 下只需打开终端,输入gnuplot 即可,此时终端中会显示程序的版本等一些信息,并进入Gnuplot的命令模式。 2.Windows 下要找到解压目录的下bin这个目录,在bin目录下有一个名为wgnuplot.exe的文件,双击该文件,就会出现GUI界面的gnuplot。 三、Gnuplot 使用的简单介绍 1.绘制简单的函数 Gnuplot的基本运算符有:+ - * / 等,x**4表示x4。 plot sin(2*x) 即可绘制出简单的正弦函数曲线,程序自动设定坐标范围。你也可以自己设定坐标范围: set xrange 当然,我们可以在绘图的时候直接设定坐标的范围: plot sin(x) 你也可以绘制简单的三位函数图。比如绘制z(x,y)=x2+y : splot x**2+y 如需设定坐标范围,则输入: splot x**2+y 设置坐标轴为对数坐标: set logscale x 2.命名图像与坐标轴 set title "示例" set xlabel "x 轴" set ylable "y 轴" 以上几条命令将图像的标题命名为“示例”,x轴命名为“x 轴”,y轴命名为“y 轴”。 3.改变坐标轴的标识,显示网格 clear plot sin(x) set xtics ("-180" -pi,"-90" -pi/2,"0" 0,"90" pi/2,"180" pi) set grid 以上几条命令首先将图形窗口清空,然后绘制sin(x)函数,改变坐标轴的标识,只显示五个角度值,最后显示网格。 4.设置图例的位置 plot sin(x) title "sine" with linepoints pointtype 5 plot sox(x) t "cosine" w boxes lt 4 set key left set key bottom set key outside 上面的第一条语句绘制一幅正弦曲线,图例的名称为“sine”,线型为linepionts(点画线),点的类型为pionttype(点),图形的颜色为5(红色);第二条语句使用了简写的方法。Gnuplot默认将图例放在右上角的边框内,后面的几条命令,将其位置进行变动。 关于线型、点类型、颜色、线宽等的具体设置请参考Gnuplot的使用指南。 5.在同一幅图中的同一区域绘制多条曲线 plot sin(x) title "sin(x)" w l lt 1,cos(x) title "cos(x)" w l lt 2 上面的命令将在同一图中的同一坐标系中绘制sin(x)(线型为直线,颜色为红色)和cos(x)(线型为直线,颜色为绿色)。 6.在同一幅图中的不同区域绘制多幅图 *设定坐标范围 set xrange *将屏幕或图像文件的边框比例设为1 set size 1,1 set origin 0,0 *程序进入多图绘制模式 set multiplot *设置第一幅图占整幅图的1/4,并设置其原点为整幅图的0,0.5处,绘制sin(x)函数 set size 0.5,0.5 set origin 0,0.5 plot sin(x) 设置第二幅图战整幅图1/4,并设置其原点为整幅图的原点,绘制1/sin(x)函数 set size 0.5,0.5 set origin 0,0 plot 1/sin(x) *设置第一幅图占整幅图的1/4,并设置其原点为整幅图的0.5,0.5处,绘制cos(x)函数 set size 0.5,0.5 set origin 0.5,0.5 plot cos(x) *设置第一幅图占整幅图的1/4,并设置其原点为整幅图的0.5,0处,绘制1/cos(x)函数 set size 0.5,0.5 set origin 0.5,0 plot 1/cos(x) *还原为单幅图绘制模式 unset multiplot *还原所有的设置 reset 7.绘制数据图 Gnuplot绘制数据图与Matlab有很大不同,它不许要用户定义变量,把数据挨个输入,而是以读取数据文件的形式,将数据绘制成图。具体步骤如下: (1)在当前文件夹建立一个文本文档,命名为example(可以为任意后缀名,如txt、inp等),将数据粘贴进去。注意x轴,y轴,或z轴的数据分别写为一列,每一列之间以空格或逗号隔开(我喜欢用Tab)。 1 5 10 10 2 10 20 30 3 15 30 50 4 20 40 70 5 25 50 90 *以第一列为x轴,第二列为y轴,绘制二维数据图 plot "example.inp" using 1:2 *以第一列为x轴,第二列为y轴,第三列为z轴,绘制三维数据图 splot "example.inp" using 1:2:3 *以第一列为x轴,第二列、第三列、第四列的平均值为y轴,最小值为第二列,最大值为第四列( using 修饰符中指定为x:y:ylow:yhigh),with函数yerrorbars) plot "example" 1:($2+$3+$4)/3:2:4 title "example" with yerrorbars 8.数据拟合 Gnuplot也提供了数据强大的拟合功能,这里以简单的一次函数和二次函数为例说明。 *以一次函数来拟合第一列和第二列数据,得到拟合参数a,b,及误差 fit a*x+b "example" via a,b *以a,b,为参数绘制直线,同时将example中的数据点画出 plot 5*x-2.20316e-13,"example" *以二次函数来拟合 fit a*x**2+b*x+c "example' via a,b,c plot 1.65386e-13*x**2+5*x+1.30488e-12,"example" 9.输出图像文件 Gnuplot支持输出为常见的图片或文档文件类型,包括pdf、jpeg、png、gif等等,具体可以通过set terminal来查询。 set term jpeg set output "example.jpg" replot 此时便在当前文件夹产生一个名为“example.jpg”的图片。 本文给出了几个最常使用的几个绘图功能,也几乎是我知道的全部,对于像我一样的初学者入门应该有所帮助。 参考来源: 1.http://www.osedu.net/yuanchuang-article/ns2/2011-07-30/282.html 2.http://randle.wordpress.com/2007/06/12/gnuplot-induction/ 3.http://dsec.pku.edu.cn/dsectest/dsec_cn/gnuplot/index.html 4.http://www.duke.edu/~hpgavin/gnuplot.html
个人分类: 生活、经验|23847 次阅读|0 个评论
gnuplot生成嵌入字体的eps文件
longxie1983 2011-4-30 14:16
gnuplot生成嵌入字体的eps文件
之前一直没有注意的问题,用gnuplot生成的eps文件其实并没有真正的嵌入字体信息。这会使生成的pdf无法通过IEEE的技术审查。 之前用的脚本开头是这样定义的 reset unset multiplot set size 0.35,0.35 set origin 0,0 set terminal postscript eps enhanced "Helvetica" 14 看上去是指定嵌入了"Helvetica"字体,可实际上却没有,后来经过反复的google发现gnulot还有一个不常用的关键字专门用来管嵌入字体的问题的--fontfile。 fontfile参数是用来指定要嵌入字体文件的位置的,原生支持pfa格式的字体文件。虽然fontfile的帮助文件说fontfile参数支持ttf格式的字体文件,并会on-the-fly的生成pfa文件进行嵌入,但是需要额外的软件支持,并需要设定一些环境变量,反正没有搞明白,如果您知道如何设定请告知一下O(∩_∩)O~。 为了能正确的嵌入字体,首先生成Helvetica字体的pfa文件,我用的是ttf2pt1。 生成需要的pfa字体后,后面的事情就变得轻松了,脚本中加入相应的fontfile就可以了 reset unset multiplot set size 0.35,0.35 set origin 0,0 set terminal postscript eps enhanced "Helvetica" 14 fontfile "Helvetica.pfa" 嵌入字体后的eps文件明显比嵌入前大了很多,从20k左右变到了200k。 最后看一下最终pdf的效果 左边的图是嵌入了Helvetica字体的,右边的图是没有嵌入字体的,注意两个图片中字母“G”和“R”,你会发现明显的不同。这是因为,Adobe Reader因为找不到Helvetica字体信息,用Arial字体进行了替换造成的。
个人分类: 科研工具|8405 次阅读|0 个评论
用gnuplot结合latex生成eps格式图
热度 1 zhaozhh02 2010-12-6 15:14
最近刚发现gnuplot原来可以结合latex作图,这样在eps图中插入公式就很简单了,下满是一个gnuplot脚本的模板,希望对大家有用。可以把下面的文字保存在一个后缀为plt文本文件里,然后再在其属性里设置打开方式为gnuplot,这样双击就可以运行了。 setterminalepslatexstandalonecolor setoutput'temple.tex'#临时的tex文件 setxrange setkeytopRightreverseverticalLeftbox#spacing2 setsize0.8,0.8 setxlabel'$x$' setylabel'$\sin(x)$' setlabel1'$\int\cos(x)dx$'at4,0.2tclt3 setxticsoutnomirror#是坐标的刻度朝外 setyticsoutnomirror plotsin(x)lw2lt1title'sin(x)'withlines setoutput !latextemple.tex&&dvips-E-oxxx.epstemple.dvi#生成eps文件 !gsview32xxx.eps#查看eps文件
个人分类: 常用软件|12997 次阅读|1 个评论
[转]Gnuplot 使用技巧
fswdong 2009-6-21 08:28
Gnuplot 使用技巧 郑小宏 2005-10-21 对于在Linux下工作的人,如果你经常要画一些二维图和简单的三维图的话,那么,gnuplot无疑是一个非常好的选择,不仅图形漂亮,而且操作简单。当然如果需要质量更高的三维图,请用其他的一些专业绘图软件。建议大家学会使用gnuplot。这个小软件通常都是Redhat Linux自带的,但自带的版本是3.7的,建议将其升级到4.0,新版本具有很多新功能。最新版本可以到http://www.gnuplot.info下载。 一些最基本的操作请大家看说明书。这里总结一下我在使用过程中遇到的一些问题以及解决的办法,目的是让那些以前不会的或不熟练的能快速入门,会画自己想要的图,因为原来的说明书很长,较难有针对性地很快找到自己想要的信息。这里简单的总结不可能面面俱到,所以大家不要抱怨我写的不全,更全面的了解还是请看说明书,网上的资料也多的是。其实这也是我们从网上一点一点搜集和摸索出来的。我相信看完后,应该平时最常见的问题基本上都能在这里找到答案。如果大家在使用过程中摸索到了我没有写到的技巧和体会,或有其它建议,请大家提告诉我,以不断完善这篇总结,谢谢! 一、 基础篇: 在linux命令提示符下运行gnuplot命令启动,输入quit或q或exit退出。 1、plot命令 gnuplot plot sin(x) with line linetype 3 linewidth 2 或 gnuplot plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2,对函数sin(x)作图 gnuplot plot sin(x) with point pointtype 3 pointsize 2 或 gnuplot plot sin(x) w p pt 3 ps 2 %用点画,点的类型(包括颜色与点的类型)是3,点的大小是2 gnuplot plot sin(x) title 'f(x)' w lp lt 3 lw 2 pt 3 ps 2 %同时用点和线画,这里title f(x)表示图例上标'f(x)',如果不用则用默认选项 gnuplot plot sin(x) %此时所有选项均用默认值。如果缺某一项则将用默认值 gnuplot plot a.dat u 2:3 w l lt 3 lw 2 %利用数据文件a.dat中的第二和第三列作图 顺便提一下,如这里最前面的两个例子所示,在gnuplot中,如果某两个词,按字母先后顺序,前面某几个字母相同,后面的不同,那么只要写到第一个不同的字母就可以了。如with,由于没有其它以w开头的词,因此可以用 w 代替,line也可以用 l 代替。 2、同时画多条曲线 gnuplot plot sin(x) title sin(x) w l lt 1 lw 2, cos(x) title cos(x) w l lt 2 lw 2 %两条曲线是用逗号隔开的。画多条曲线时,各曲线间均用逗号隔开就可以了。 以上例子中是对函数作图,如果对数据文件作图,将函数名称换为数据文件名即可,但要用单引号引起来。 3、关于图例的位置 默认位置在右上方。 gnuplot set key left %放在左边,有left 和right两个选项 gnuplot set key bottom %放在下边,只有这一个选项;默认在上边 gnuplot set key outside %放在外边,但只能在右面的外边 以上三个选项可以进行组合。如: gnuplot set key left bottom %表示左下边 还可以直接用坐标精确表示图例的位置,如 gnuplot set key 0.5,0.6 %将图例放在0.5,0.6的位置处 4、关于坐标轴 gnuplot set xlabel x %x轴标为x gnuplot set ylabel y %y轴标为y gnuplot set ylabel DOS tc lt 3 %其中的tc lt 3表示DOS的颜色用第三种颜色。 gnuplot set xtics 1.0 %x轴的主刻度的宽度为1.0,同样可以为y轴定义ytics gnuplot set mxtics 3 %x轴上每个主刻度中画3个分刻度,同样可以为y轴定义mytics gnuplot set border 3 lt 3 lw 2 %设为第三种边界,颜色类型为3,线宽为2 同样可以为上边的x轴(称为x2)和右边y(称为y2)轴进行设置,即x2tics,mx2tics,y2tics,my2tics。 gnuplot set xtics nomirror gnuplot unset x2tics %以上两条命令去掉上边x2轴的刻度 gnuplot set ytics nomirror gnuplot unset y2tics %以上两条命令去掉右边y轴的刻度 5、在图中插入文字 gnuplot set label sin(x) at 0.5,0.5 %在坐标(0.5,0.5)处加入字符串sin(x)。 在输出为.ps或.eps文件时,如果在set term 的语句中加入了enhanced选现,则可以插入上下标、希腊字母和特殊符号。上下标的插入和latex中的方法是一样的。 6、在图中添加直线和箭头 gnuplot set arrow from 0.0,0.0 to 0.6,0.8 %从(0.0,0.0)到(0.6,0.8)画一个箭头 gnuplot set arrow from 0.0,0.0 to 0.6,0.8 lt 3 lw 2 %这个箭头颜色类型为3,线宽类型为2 gnuplot set arrow from 0.0,0.0 to 0.6,0.8 nohead lt 3 lw 2 %利用nohead可以去掉箭头的头部,这就是添加直线的方法。 注意,在gnuplot中,对于插入多个的label和arrow等等,系统会默认按先后顺序分别对各个label或arrow进行编号,从1开始。如果以后要去掉某个label或arrow,那么只要用unset命令将相应的去掉即可。如: gnuplot unset arrow 2 将去掉第二个箭头。 7、图的大小和位置 gnuplotset size 0.5,0.5 %长宽均为默认宽度的一半,建议用这个取值,尤其是画成ps或eps图形的时候 gnuplotset origin 0.0,0.5 %设定图的最左下角的那一点在图形面板中的位置。这里图将出现在左上角。 8、画三维图 gnuplotsplot 文件名 u 2:4:5 %以第二和第四列作为x和y坐标,第五列为z坐标。 9.将图形输出到文件 在gnuplot中,输出文件的格式是由terminal来控制的。默认的情况下,都是输出到屏幕,即终端模式为X11。如果想输出到文件,则必须对terminal进行设置。要了解有那些终端类型,可以输入 set terminal后回车,所有支持的终端模式(或文件格式)都列出来了。就我来说,输出文件的格式用得最多的是ps和eps文件。这在运行画图命令plot或splot前必须先运行如下两条命令: gnuplotset term post eps color solid enh gnuplotset output a.eps 其中第一条命令为设置终端模式,post即为postscript模式,这是输出到ps或eps文件必须有的。后面的eps,color,solid以及enh选项均可以有或没有,根据你的需要。eps表示输出为eps文件,没有就输出为ps文件;color表示输出图形为彩色,不用就会保存为黑白的;solid表示输出图中的所有线都用实线,不用则除了第一条线为实线外,其它的均用不同的虚线;使用enh(enhanced)选项可以在图中插入上下标、希腊字母和特殊符号,不用则不能实现这些功能。后面的选项可以根据自己的需要选择一个或几个。 第二条命令对output的设置表示要输出的文件的名字。但是请注意,运行完这条命令后,还仅仅是定义了输出文件的名字,实际上,图还没画到这个文件里去。因此运行这两条命令还只是进行了必须的设置。然后运行如下命令 gnuplotplot sin(x) w l 或 gnuplotreplot(假如前面已经运行过plot或replot命令的话) 这时,图形就在上面指定的文件中了。 要输出为其它格式,同样要进行这样的设置,比如要输出为jpg格式,则在运行画图命令前先运行如下命令: gnuplotset term jpeg gnuplotset output a.jpg 如果要由其它模式再返回到输出到屏幕,则运行如下命令: gnuplotset term X11 二、提高篇: 1、如何在同一张图里同时画多个图 gnuplotset multiplot %设置为多图模式 gnuplotset origin 0.0,0.5 %设置第一个图的原点的位置 gnuplotset size 0.5,0.5 %设置第一个图的大小 gnuplotplot a1.dat gnuplotset origin 0.5,0.5 %设置第二个图的原点的位置 gnuplotset size 0.5,0.5 %设置第二个图的大小 gnuplotplot a2.dat gnuplotset origin 0.0,0.0 %设置第三个图的原点的位置 gnuplotset size 0.5,0.5 %设置第三个图的大小 gnuplotplot a3.dat gnuplotset origin 0.5,0.0 %设置第四个图的原点的位置 gnuplotset size 0.5,0.5 %设置第四个图的大小 gnuplotplot a4.dat 当然,如果后一个图中的某个量的设置和前一个的相同,那么后一个中的这个量的设置可以省略。例如上面对第二、第三和第四个图的大小的设置。前一个图中对某个量的设置也会在后一个图中起作用。如果要取消在后面图中的作用,必须用如下命令,如取消label,用 gnuplotunset label 2、作二维图时,如何使两边坐标轴的单位长度等长 gnuplot set size square %使图形是方的 gnuplot set size 0.5,0.5 %使图形是你要的大小 gnuplot set xrange gnuplot set yrange %两坐标轴刻度范围一样 gnuplot plot a.dat 3、如何在同一张图里利用左右两边的y轴分别画图 gnuplot set xtics nomirror %去掉上面坐标轴x2的刻度 gnuplot set ytics nomirror %去掉右边坐标轴y2的刻度 gnuplot set x2tics %让上面坐标轴x2刻度自动产生 gnuplot set y2tics %让右边坐标轴y2的刻度自动产生 gnuplot plot sin(x),cos(x) axes x1y2 %cos(x)用x1y2坐标,axes x1y2表示用x1y2坐标轴 gnuplot plot sin(x),cos(x) axes x2y2 %cos(x)用x2y2坐标,axes x2y2表示用x2y2坐标轴 gnuplot set x2range %设定x2坐标的范围 gnuplot replot gnuplot set xrange %设定x坐标的范围 gnuplot replot gnuplot set xlabel 'x' gnuplot set x2label 't' gnuplot set ylabel 'y' gnuplot set y2label 's' gnuplot replot gnuplot set title 'The figure' gnuplot replot gnuplot set x2label 't' textcolor lt 3 %textcolor lt 3或tc lt 3设置坐标轴名称的颜色 4、如何插入希腊字母和特殊符号 一般只能在ps和eps图中,且必须指定enhanced选项。在X11终端(即显示器)中无法显示。 gnuplot set terminal postscript enhanced 然后希腊字母就可以通过{/Symbol a}输入。例如 gnuplot set label {/Symbol a} 各种希腊字母与特殊符号的输入方法请见安装包中gnuplot-4.0.0/docs/psdoc目录下的ps_guide.ps文件。 另外还可参见: http://t16web.lanl.gov/Kawano/gnuplot/label-e.html#4.3 5、gnuplot中如何插入Angstrom(埃)这个符号(A上面一个小圆圈) 脚本中在插入前先加入 gnuplotset encoding iso_8859_1 这个命令,然后就可以通过{\305}加入了。如横坐标要标上k(1/?): gnuplotset xlabel 'k(1/{\305}) 如果是multiplot模式,则这个命令必须放在 gnuplotset multiplot 的前面。 如果后面还要插入别的转义字符,那么还要在插入字符后加入如下命令: set encoding default 安装包中gnuplot-4.0.0/docs/psdoc/ps_guide.ps文件中的表中的E代表那一列的所有符号都用这个方法输入。 6、gnuplot画等高线图 gnuplotsplot 文件名.dat u 1:2:3 w l %做三维图 gnuplotset dgrid3d 100,100 %设置三维图表面的网格的数目 gnuplotreplot gnuplotset contour %设置画等高线 gnuplotset cntrparam levels incremental -0.2,0.01,0.2 %设置等高线的疏密和范围,数据从 -0.2到0.2中间每隔0.01画一条线 gnuplotunset surface 去掉上面的三维图形 最后用鼠标拽动图形,选择合理的角度即可。或者直接设置(0,0)的视角也可以: gnuplotset view 0,0 gnuplotreplot 这里注意,画三维图的数据文件必须是分块的,也就是x每变换一个值,y在其变化范围内变化一周,这样作为一块,然后再取一个x值,y再变化一周,作为下一数据块,等等。块与块之间用一空行格开。 7、如何画漂亮的pm3d图 gnuplot set pm3d %设置pm3d模式 gnuplot set isosamples 50,50 %设置网格点 gnuplot splot x**2+y**2 %画三维图 gnuplot splot x**2+y**2 w pm3d %画成pm3d模式,注意比较变化 gnuplot set view 0,0 %设置视角,(0,0)将投影到底面上去 gnuplot splot x**2+y**2 w pm3d %重画,注意看变化 gnuplot unset ztics %把z轴上的数字给去掉 gnuplot set isosamples 200,200 %使网格变细 gnuplot replot %重画,注意看变化,主要是过渡更光滑 8、利用脚本文件避免重复输入 有时候对某个数据文件做好一张图后,下次可能还要利用这个数据文件作图,但某个或某些设置要作些细微变化。这时候,可以把第一次作图时的命令全部写到一个文件里,如a.plt,下次只要将相应的设置做修改后,用下面的命令就会自动运行文件所有的命令而最后得到你要的图: gnuplotload a.plt 作为一个例子,假设文件名为a.plt,里面的内容为: set pm3d set view 0,0 unset ztics set isosamples 200,200 splot x**2+y**2 w pm3d set term post color set output a.ps replot 那么启动gnuplot后,只要运行如下命令就可以了: gnuplotload a.plt 如果我们要得到的仅仅是.ps或.eps图,那也可以在linux命令提示符下直接运行如下命令: $gnuplot a.plt 9、在gnuplot模式下运行linux命令 在gnuplot提示符下也可以运行linux命令,但必须在相应的命令前面加上 ! 号。例如,假设很多参量都已经设置好了,但需要对某个数据文件a.dat进行修改后再画图,则可以用如下方式 gnuplot!vi a.dat 通过这种方式,所有的linux命令都可以在gnuplot环境里运行。 另外,也可以在gnuplot的提示符后输入shell,暂时性退出gnuplot,进入linux环境,做完要做的事情后,运行exit命令,又回到gnuplot环境下。 gnuplotshell $vi a.f $f77 a.f $a.out (假设生成a.dat数据文件) $exit gnuplotplot a.dat w l
个人分类: 科研资源|5290 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-3 16:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部