绘图环境参数
如第二章所述,只要键入
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)
# 以文字作为标点
set xtics ("low" -10, "medium" 0, "high" 10)
plot sin(x)
# 在特定位置放上标点
set xtics (-10,-9,-7,-3,0,pi/2,2*pi)
plot sin(x)
xdtics
将
X
座标轴上标点名称依
0
,
1
,
…
改为
Sun
,
Mon
,
… Sat
等。 大于
7
的数目除以
7
取其馀数。
# 将标点名称改为 Sun, Mon, ... Sat 等
set xdtics
plot [0 : 10] sin(x)
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)
座标显示方式
分为线性与对数两种。一般为前者,若要改为对数方式,其语法为:
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
除了绘出图形外,尚可加入注解做为辅助说明。这注解包括文字与线条两方面,其提供的设定有:
功能 |
绘图参数名称 |
线条 |
arrow |
文字注解 |
key, label, time, title, xlabel, ylabel, zlabel |
线条
在图上画一线段可以选择有无箭头。其语法为:
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))
set key at 2, 0.5
plot [-pi/2:pi] cos(x), -( sin(x) > sin(x+1) ? sin(x) : sin(x+1))
时间参数设定是将图产生的时间标在图上。其语法为
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)