图形对象


折线与多边形

参数

折线的折角的弧半径可以用

linearc=弧半径
设置,缺省值为0pt,弧半径不能小于0。

帧的四个角的弧半径可以用

framearc=0到1之间的数
设置,它不是一个长度值,实际的弧半径是用这个数乘以0.5,再乘以帧的宽度和 高度中较小的那一个。

帧的四个角的大小由

cornersize=relative/absolute
设置,缺省值是relative。如果是absolute,参数“linearc”的值决定了 帧的圆角的半径。

折线

折线就是用直线段把坐标依次连接起来,它的语法是

\psline*[参数]{箭头}(x0,y0)(x1,y1)… (xn,yn)
比如
\psline[linewidth=2pt,linearc=.25]{->}(4,2)(0,1)(2,0)

折线的一个简单版本被用于绘制一条线段

\qline(coor0)(coor1)

多边形

多边形与折线类似,只是首尾相连,形成一个多边形,它的语法是

\pspolygon*[参数](x0,y0)(x1,y1)(x2,y2)… (xn,yn)
比如
\pspolygon*[linearc=.2,linecolor=darkgray](1,0)(1,2)(4,0)(4,2)

帧对象绘制一个矩形,它的语法是

\psframe*[参数](x0,y0)(x1,y1)
其中一对对角是(x0,y0)和(x1,y1)。比如
\psframe*[linecolor=white](1,.5)(2,1.5)

菱形

菱形的语法是

\psdiamond*[参数](x0,y0)(x1,y1)
其中(x0,y0)是菱形的中心,(x1,y1)中的x1表示半宽,y1表示半高。比如
\psdiamond[framearc=.3,fillstyle=solid,fillcolor=lightgray](2,1)(1.5,1)
菱形可以绕中心旋转,旋转角度由参数
gangle=角度
决定

三角形

三角形的语法是

\pstriangle*[参数](x0,y0)(x1,y1)
其中(x0,y0)是底边的中心,(x1,y1)中的x1是底边的宽,y1是底边上的高。比如
\pstriangle*[gangle=10](2,.5)(4,1)

弧、圆和椭圆

圆的语法是

\pscircle*[参数](x0,y0){半径}
其中(x0,y0)是圆心。比如
\pscircle[linewidth=2pt](.5,.5){1.5}
它的一个简单版本绘制一个圆盘
\qdisk(x0,y0){半径}

扇形

扇形的语法是

\pswedge*[参数](x0,y0){半径}{起始角度}{结束角度}
其中(x0,y0)是圆心。比如
\pswedge[linecolor=gray,linewidth=2pt,fillstyle=solid]{2}{0}{70}

椭圆

椭圆的语法是

\psellipse*[参数](x0,y0)(x1,y1)
其中(x0,y0)是椭圆中心,(x1,y1)中的x1表示x轴方向上的半径,y1表示y轴方向上的 半径。比如
\psellipse[fillcolor=lightgray](.5,0)(1.5,1)

圆弧

圆弧的语法是

\psarc*[参数]{箭头}(x,y){半径}{起始角度}{结束角度}
其中(x,y)是椭圆中心。比如
\psarc*[showpoints=true](1.5,1.5){1.5}{215}{0}

如果画一条弧线连接一个角的两边,且带箭头,比如

\SpecialCoor
\psline[linewidth=2pt](4;50)(0,0)(4;10)
\psarc{->}{3}{10}{50}
这样画的问题是,箭头嵌入结束边。如果让箭头指向起始边也一样。 为了解决这个问题,可以用参数
arcsepA=宽度
它在起始边中心的基础上,跳过指定宽度,就避免了箭头嵌入边。 另一个参数
arcsepB=宽度
作用于结束边。而参数
arcsep=宽度
同时作用于两边。上述例子可以改为
\SpecialCoor
\psline[linewidth=2pt](4;50)(0,0)(4;10)
\psarc[arcsepB=2pt]{->}{3}{10}{50}

反向弧

反向弧就是顺时针圆弧,完全可以通过设置圆弧的起始角度、结束角度以及箭头朝向获得。 pstricks还是提供了单独的命令

\psarcn*[参数]{箭头}(x,y){半径}{起始角度}{结束角度}
其中(x,y)是椭圆中心。

椭圆弧

椭圆弧的语法是

\psellipticarc*[参数]{箭头}(x0,y0)(x1,y1){半径}{起始角度}{结束角度}
其中(x0,y0)是椭圆中心,(x1,y1)中的x1是水平方向半径,y1是垂直方向半径。比如
\psellipticarc[showpoints=true,arrowscale=2]{->}(.5,0)(1.5,1){215}{0}

反向椭圆弧

反向椭圆弧和反向圆弧类似,它的语法是

\psellipticarcn*[参数]{箭头}(x0,y0)(x1,y1){半径}{起始角度}{结束角度}

曲线

贝泽尔曲线

贝泽尔曲线的语法是

\psbezier*[参数]{箭头}(x0,y0)(x1,y1)(x2,y2)(x3,y3)
四个坐标是四个控制点。比如
\psbezier[linewidth=2pt,showpoints=true]{->}(0,0)(1,4)(2,1)(4,3.5)

抛物线

抛物线的语法是

\parabola*[参数]{箭头}(x0,y0)(x1,y1)
抛物线通过点(x0,y0),极值点是(x1,y1)。比如
\psset{xunit=.01}
\parabola{<->}(400,3)(200,0)

插值曲线

下面介绍的插值曲线是通过一系列坐标的曲线,除了开始和结束的点,其它点被称为内部点。 以内部点为顶点,连接相邻点所形成的角的平分线,曲线在内部点上垂直于该平分线。曲线 受参数

curvature=num1 num2 num3
控制。三个值在-1到1之间,数值1越小,曲线越紧,上述内部点与相邻点所成的角如果大于45 度,则数值越小,曲线越紧,其它情况下则越松。数值3决定了曲线在每一点的倾斜,如果等于0, 曲线在内部点垂直于角平分线,如果等于-1,则平行于相邻两点的连线。

对象

\pscurve*[参数]{箭头}(x1,y1)… (xn,yn)
绘制了一条开放的插值曲线。比如
\pscurve[showpoints=true]{<->}(0,1.3)(0.7,1.8)(3.3,0.5)(4,1.6)(0.4,0.4)

对象

\psecurve*[参数]{箭头}(x1,y1)… (xn,yn)
绘制了一条开放的插值曲线,但不包括第一个点和最后一个点。比如
\psecurve[showpoints=true](.125,8)(.25,4)(.5,2)(1,1)(2,.5)(4,.25)(8,.125)

对象

\psccurve*[参数]{箭头}(x1,y1)… (xn,yn)
绘制了一条封闭的,即首尾相连的插值曲线。比如
\psccurve[showpoints=true](.5,0)(3.5,1)(3.5,0)(.5,1)

点的语法是

\psdot*[参数](x1,y1)
\psdots*[参数](x1,y1)(x2,y2)… (xn,yn)
它们在每一个坐标上绘制一个点。点的形状由参数
dotstyle=风格
决定。“风格”可以是下列值
*
o
Bo
x
+
B+
asterisk
Basterisk
oplus
otimes
|
B|
square
Bsquare
square*
diamond
diamond*
triangle
Btriangle
triangle*
pentagon
Bpentagon
pentagon*

参数

dotsize=dim num
决定的点的直径是dim 加上num乘以线宽。

在水平和垂直方向上缩放点用参数

dotscale=num1 num2
如果不给num2,则两个方向上都是num1。

点的旋转由参数

dotangle=角度
决定

网格

网格的语法是

\psgrid[参数](x0,y0)(x1,y1)(x2,y2)
其中(x1,y1)和(x2,y2)分别是左下角和右上角,从(x0,y0)开始 标注数字,如果省略(x0,y0),则从(x1,y1)开始标注,如果不给任何坐标, 则整个图形环境被一个10乘10的网格占据。比如
\psgrid(0,0)(-1,-1)(3,2)

参数

gridwidth=线宽
设置网格线宽,缺省值是0.8pt。参数
gridcolor=颜色
设置网格线颜色,缺省值是black。参数
griddots=num
中如果num大于0,网格线就是虚线,每条线的点数就是num。参数
gridlabels=标注字体大小
设置标注的字体大小,缺省值为10pt。参数
gridlabelcolor=颜色
设置标注的颜色,缺省值为black。

参数

subgriddiv=分割次数
设置每一个网格被分为分割的次数,缺省值是5,也就是每一大格又被分为25小格。 参数
subgridwidth=子网格线宽
设置子网格线宽,缺省值为0.4pt。参数
subgridcolor=颜色
设置子网格线的颜色,缺省值为gray。参数
subgriddots=num
中如果num大于0,子网格线就是虚线,每条线的点数就是num。

图表

图表就是将指定的数据在坐标系中表示出来,表示的方式由参数

plotstyle=style
设置,“style”的值可以是:dots,line,polygon,curve,ecurve,ccurve。 缺省值是line。

如果数据来源于文件,可以用

\fileplot*[参数]{文件名}
文件由一系列坐标构成,坐标不带单位,可以用{}、()括起来,或者用 逗号或者白空格分隔,全部数据可以用一对[]括起来。

数据在文件中的另一个办法是用命令

\readdata{命令}{文件名}
把数据从文件中读到“命令”中去,然后用命令
\dataplot*[参数]{命令}
产生图表,比如
\readdata{\foo}{foo.data}
\readdata{\bar}{bar.data}
\dataplot{\foo\bar}
\dataplot[origin={0,1}]{\bar}

如果想在文档中直接列出数据,可以用命令

\savedata{命令}[数据]
先将数据保存到命令中。比如
\psset{xunit=.2cm,yunit=1.5cm}
\savedata{\mydata}[
{{0, 0}, {1., 0.946083}, {2., 1.60541}, {3., 1.84865}, {4., 1.7582},
{5., 1.54993}, {6., 1.42469}, {7., 1.4546}, {8., 1.57419},
{9., 1.66504}, {10., 1.65835}, {11., 1.57831}, {12., 1.50497},
{13., 1.49936}, {14., 1.55621}, {15., 1.61819}, {16., 1.6313},
{17., 1.59014}, {18., 1.53661}, {19., 1.51863}, {20., 1.54824}}]
\dataplot[plotstyle=curve,showpoints=true, dotstyle=triangle]{\mydata}
\psline{<->}(0,2)(0,0)(20,0)

直接使用函数表达式是最好的,先用参数

plotpoints=点数
设定计算多少个坐标,缺省值是50。可惜pstricks的命令
\psplot*[参数]{xmin}{xmax}{function}
中只认识Postscript函数,比如
\psplot[plotpoints=200]{0}{720}{x sin}

还可以使用参数化的函数图表

\parametricplot*[参数]{tmin}{tmax}{function}
比如
\parametricplot[plotstyle=dots,plotpoints=13]{-6}{6}{1.2 t exp 1.2 t neg exp}

数轴

数轴定义在包“pst-plot”中,所以请在LaTeX导言中加入

\usepackage{pst-plot}
数轴的语法是
\psaxes*[参数]{箭头}(x0,y0)(x1,y1)(x2,y2)
其中(x1,y1)和(x2,y2)分别是左下角和右上角,从(x0,y0)开始 标注数字,如果省略(x0,y0),则从(x1,y1)开始标注。比如
\psaxes[linewidth=1.2pt,labels=none,ticks=none]{<->}(2,1)(0,0)(4,3)

数轴标注可以通过下列参数设置

线圈和锯齿

“pst-coil”包提供了可以用于表示二、三维线圈、弹簧、锯齿线的命令,要使用它们 请在LaTeX导言中加入

\usepackage{pst-coil}

三个命令用来表示二、三维线圈、弹簧、锯齿线

\pscoil*[参数]{箭头}(x0,y0)(x1,y1)
\psCoil*[参数]{角度1}{角度2}
\pszigzag*[参数]{箭头}(x0,y0)(x1,y1)
前两个表示三维线圈或弹簧,后者是一个二维的锯齿。它们可以用参数
coilwidth=dim 缺省值是1cm。
coilheight=num 缺省值是1。
coilarm=dim 缺省值是0.5cm。
coilaspect=angle 缺省值为45。
coilinc=angle 缺省值是10。
比如
\psCoil[coilaspect=0,coilheight=1.33,coilwidth=.75,linewidth=1.5pt]{0}{1440}


目录