gnuplot 入门教程 4

最后更新于:2022-04-01 07:31:48

# 绘图环境参数 如第二章所述,只要键入 plot sin(x), '1.dat' 即可得到图1 的结果。gnuplot 自动调整 X 轴、 Y 轴的显示范围,使图形显示在适当的位置并选择不同的颜色、图形,用以区别不同的函数或数据,也就是 gnuplot 自动调整其所需的绘图环境。若我们需要一些特别的绘图参数,如在 3D 中加入等高线、设定消去隐藏线、改变 X 轴、Y 轴的座标点名称等,可由改变绘图环境参数而改变之。 本章说明这些绘图参数设定的方法与功能。 ### Axis 绘图参数在设定坐标轴方面的参数可分为变量名称、数字格式、网格、显示范围、坐标轴显示方式与显示与否等六方面的设定: ###  变量名称设定 一般以 x 为横轴上的变量。可用 dummy 设定为其它的名称, 所绘函数的变量名称亦随之改变。如 set dummy t 将自变量改为 t,图8、图17、图20 均改变自变量名称。 ###  数字格式设定 设定数字的显示方式与格式。由 format 此项参数设定显示格式,其语法为 : ~~~ set format {<axes>} {"<format-string>"} show format # 显示各轴数字显示的型式 ~~~ 其中 axis 为 x、y、z、xy 或预设为xy。format-string 为描述数字格式的字符串,可接受如 C 语言中 printf 对数字的 f、e、g 三种格式化描述,亦可加入文字 (必须少于100 字)。以下举一些例子:  ~~~ set format xy "%.2e" set format x "%3.0f cm" ~~~ 显示方式由 tics、xtics等设定。  xtics 是对 X 坐标轴上的格点做设定。如起始点、结束点、间隔或在轴上特定点放特定的名称。其语法为: ~~~ set xtics { {<start>, <incr>{, <end>}} | {({"<label>"} <pos> {, {"<label>"} <pos>}...)} } set noxtics # 不标示任何 X 轴上的标点。 show xtics # 显示 X 轴标点的状况。 ~~~ 下面是三个改变格点的例子。 ~~~ # 每隔 2 格一个标点 set xtics -10,2,10 plot sin(x) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a423417c08c.PNG) ~~~ # 以文字作为标点 set xtics ("low" -10, "medium" 0, "high" 10) plot sin(x) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a423418d824.PNG) ~~~ # 在特定位置放上标点 set xtics (-10,-9,-7,-3,0,pi/2,2*pi) plot sin(x) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a423419be9e.PNG) xdtics 将 X 座标轴上标点名称依 0,1,…改为 Sun,Mon,…  Sat 等。 大于 7 的数目除以7 取其馀数。 ~~~ # 将标点名称改为 Sun, Mon, ... Sat 等 set xdtics plot [0 : 10] sin(x) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42341ae94e.PNG) ytics, ymtics, ydtics, ztics, zmtics, zdtics 与 xtics, xmtics, xdtics 相似,不同点是作用在不同的轴上。 ticslevel 是在画 3D 图形时,调整 Z 轴的相对高度。语法为:  ~~~ set ticslevel {<level>} show tics ~~~ ### 网格设定 在 XY 座标平面上依刻度画上方格子。 ~~~ # 设定变数为 t set dummy t # 设定 X 轴 Y 轴标点的格式 set format xy "%3.2f" # 产生网格 set grid plot sin(t) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42341bd885.PNG) ### 座标显示方式 分为线性与对数两种。一般为前者,若要改为对数方式,其语法为:  ~~~ set logscale <axes> <base> set nologscale <axes> show logscale ~~~ 其中 axes 为 X 轴、Y 轴、Z 轴的任意组合。base 预设为 10。 ### 显示范围设定 改变各轴的显示范围。autoscale 参数设定后 gnuplot 自动调整显示范围。其余的如 rrange, trange, xrange, yrange, zrange 则是由使用者设定该轴的范围,以 xrange 为例,其语法为:  ~~~ set xrange [{<xmin> : <xmax>}] ~~~ 其中参数 <xmin> 与 <xmax> 代表 X 轴的起点与终点, 可以是数字或数学式子。如图7 中 set [0:10] sin(x) 设定 X 轴显示范围为 0 与 10 之间。此时可用 ~~~ set xrange [0:10] plot sin(x) ~~~ 使用 autoscale 参数调整显示范围,其语法为:  ~~~ set autoscale <axes> set noautoscal <axes> show autoscale ~~~ 其中 <axes> 为 gnuplot 欲调整的轴,可以是 x, y, z 或 xy,预设为所有的轴。 ###  座标轴显示与否设定 设定是否要画出座标轴,以 X 轴为例:  ~~~ set xzeroaxis # 设定显示 X 座标轴 set noxzeroaxis # 设定不显示 X 座标轴 show xzeroaxis # 检查 X 座标轴显示与否 ~~~ ### Label gnuplot 除了绘出图形外,尚可加入注解做为辅助说明。这注解包括文字与线条两方面,其提供的设定有: <table><tbody><tr><td valign="top"><p>功能</p></td><td valign="top"><p>绘图参数名称</p></td></tr><tr><td valign="top"><p>线条</p></td><td valign="top"><p>arrow</p></td></tr><tr><td valign="top"><p>文字注解</p></td><td valign="top"><p>key, label, time, title, xlabel, ylabel, zlabel</p></td></tr></tbody></table> ###  线条 在图上画一线段可以选择有无箭头。其语法为: ~~~ set arrow {<tag>} {from <sx>,<sy>{,<sz>}}  {to <ex>,<ey>{,<ez>}} {{no}head} unset arrow {<tag>} # 删除一线条 show arrow # 显示线条使用情况 ~~~ 其中参数 <tag> 是给该条线条一个整数名称,若不设定则为最小可用整数。此线条由坐标 (sx, sy, sz) 到 (ex, ey, ez) (在 2D 中为 (sx, sy)到(ex, ey))。参数 nohead 为画没有箭头的线段,参数 head 或没有 nohead 为画有箭头的线段。图24 中使用没有箭头的线段作为辅助说明。以下为一些例子: ~~~ # 画一带有箭头的线条由原点到 (1,2)。 set arrow to 1,2 # 画一名为 3 的带箭头线条 由 (-10,4,2) 到 (-5,5,3)。 set arrow 3 from -10,4,2 to -5,5,3 # 改变名为 3 的线条起始点至 (1,1,1)。 set arrow 3 from 1,1,1 # 删除名为 2 的线条。 unset arrow 2 # 删除所有线条。 unset arrow # 显示线条的使用情形。 show arrow ~~~ ### 文字注解 分为设定标题 (title),标示 (label) 与时间 (time) 三部份。标题设定为在图的正上方加上说明本图的文字。其语法为:  ~~~ set title {"<title-text>"} {<xoff>}{,<yoff>} show title ~~~ 设定参数 <xoff> 或 <yoff> 为微调标头放置的位址。 xlabel, ylabel, zlabel 的语法与 title 相同,其各自描述一坐标轴。 标示 (label) 为在图上任一位置加上文字说明,一般与线条一并使用。其语法为: ~~~ set label {<tag>} {"<label_text>"} {at <x>,<y>{,<z>}}{<justification>} unset label {<tag>} # 删除一标示 show label # 显示标示使用情况 ~~~ 其中参数 <tag> 与 "线条" (arrow) 中 <tag> 意义相同,用以区别不同的 label。参数 <justification> 是调整文字放置的位置,可以是 left,right 或 center。举一些例子: ~~~ # 将 y=x 放在座标 (1,2) 之处。 set label "y=x" at 1,2 # 将 y=x^2 放在座标 (2,3,4) 之处,并命名为 3。 set label 3 "y=x^2" at 2,3,4 right # 将名为 3 的标示居中放置。 set label 3 center # 删除名为 2 的标示。 set nolabel 2 # 删除所有标示。 set nolabel # 显示标示使用情形。 show label ~~~ 一般绘一图形后,gnuplot 将函数名称或图形名称置于右上角。 key 参数设定可改变名称放置位置。其语法为: ~~~ set key set key <x>,<y>{,<z>} unset key show key ~~~ 其中参数 <x>, <y>, <z> 设定名称放置位置 。unset key 为不显示名称,若使用 set key 则再度显示名称。若使用 set key 0.2, 0.5 则显示函数名称于坐标 (0.2, 0.5) 之处。 ~~~ unset key plot sin(x), cos(atan(x)) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42341cd088.PNG) ~~~ set key at 2, 0.5 plot [-pi/2:pi] cos(x), -( sin(x) > sin(x+1) ? sin(x) : sin(x+1)) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42341e1c29.PNG) 时间参数设定是将图产生的时间标在图上。其语法为 ~~~ set time {<xoff>}{,<yoff>} unset time show time ~~~ 设定参数 <xoff> 或 <yoff> 为微调时间放置的位址,正数表示向上或向右,负数为反方向,以字的长宽作为单位。 ~~~ set title "sin(x)+sin(2*x)" set xlabel "X-axis" set ylabel "Y-axis" set arrow from -2,1 to -2.5,0.4 set label "Local max" at -2,1.1 unset key set time plot [-5:5] sin(x)+sin(2*x) ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42341f0045.PNG)
';