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)