我们在点图元 中,介绍了如何用逻辑坐标点定位图元。在这里,将继续研究线图元的情况。线图元也是最基本的图元之一,至少由两个逻辑坐标点定位;当逻辑坐标点大于两个时,可以连续绘制多条线。
下面的画法绘制的是Ana Silva各项体操成绩的折线图:
|
A |
1 |
=canvas() |
2 |
=demo.query("select EVENT,SCORE from GYMSCORE where NAME='Ana Silva'") |
3 |
=A1.plot("BackGround") |
4 |
=A1.plot("EnumAxis","name":"x","allowRegions":false) |
5 |
=A1.plot("NumericAxis","name":"y","location":2,"autoCalcValueRange":false, "maxValue":15,"minValue":14,"allowRegions":false) |
6 |
=A1.plot("Line","axis1":"x","data1":A2.(EVENT),"axis2":"y","data2":A2.(SCORE)) |
7 |
=A1.draw@p(450,250) |
A1中建立画布。A2中获取绘图数据如下:
A3中绘制背景,A4中绘制枚举轴作为横轴x,A5中绘制数值轴作为纵轴y,并且设定了纵轴的最大最小值。特别的,横轴和纵轴的Allow regions属性均设为了false,不绘制坐标区域的间隔区,以便更清楚地看清线图元的绘制情况。
我们下面将主要研究A6中绘制的线图元。先来看A7中的绘制效果:
线图元至少需要两个坐标点,才能确定位置。设定数据坐标时,需要选定两个逻辑坐标轴,并分别设定逻辑坐标。
在这里,设定的逻辑坐标A2.(EVENT) 和A2.(SCORE) 均为序列,当设定的图元逻辑坐标大于两个点时,将绘制多条线。如果设定了一个逻辑坐标点,将无法绘制线图。
我们从前面绘制的图形中可以看到,线图元绘制出线的端点及折点为自动填充颜色的圆点,在绘制折线图时,线图元可以视为带连线的点图元。因此,线图元的外观属性和点图元 中的点图元的外观属性是一致的,需要注意的是,折线图元的线色、线宽、线型等属性,和点的边框属性是共用的。如,修改A6中的绘图属性,设置点形图的外观属性如下:
设定线为深蓝色虚线,线粗为2像素;Marker style为三角形,Marker weight设定为6个像素,并将Fill color改为浅蓝色。修改设定后,绘图如下:
从图中可以看到,折线的外观按照设定发生了改变。
使用线图元,还可以在线围出的区域中填充颜色,绘制面积图等。如,修改A6中线图元的绘图属性如下:
在这里,勾选了Closed area属性,并设定了Area color,此时,绘图效果如下:
当选择了Closed area属性后,此时将填充绘制的折线与数据属性中设置的坐标轴Axis 1之间所围出的区域。
如果选定了Closed area属性的同,同时又将End to end属性选中,即编辑A6中的绘图代码,修改线图元绘图属性如下:
此时,绘图结果如下:
当选择了线图元首尾相连,又指定了闭合区域时,此时填充的区域将改为绘制的折线首尾相连后产生的闭合区域。
特别的,如果只需要绘制首尾相连的线形图,而不需要填充,那么可以在选定了Closed area和End to end属性的同时,再设定填充色的透明度为0:
此时绘图时,结果如下:
可以注意到,此时折点同样无填充效果。
在集算器中,图元可以根据所需要的数据属性,绘制在各种坐标系中。如下面的例子,在极坐标系中,用线图元绘制的函数图象:
|
A |
B |
C |
1 |
=canvas() |
20 |
>rads=[],angs=[] |
2 |
for B1 |
=360*(A2-1)/B1 |
=1+cos(B2*pi()/180) |
3 |
|
>angs=angs|B2 |
>rads=rads|C2 |
4 |
=A1.plot("BackGround") |
|
|
5 |
=A1.plot("NumericAxis","name":"r","location":3, "scaleNum":2,"regionLineStyle":0) |
|
|
6 |
=A1.plot("NumericAxis","name":"a","location":4, "autoCalcValueRange":false,"maxValue":360,"scaleNum":6, "regionLineStyle":0) |
|
|
7 |
=A1.plot("Line","endToHead":true,"closedArea":true, "transparent":0,"markerStyle":0,"axis1":"r","data1":rads, "axis2":"a","data2":angs) |
|
|
8 |
=A1.draw@p(350,250) |
|
|
上面的画法是用折线图拟合绘制的心形线(Cardioid),其中B2中设定样品点数,第2行和第3行的代码循环计算样品点,并将它们的极坐标分别记录在参数rads和angs中。A5中绘制数值轴r作为极轴,不绘制间隔线,间隔区透明度设为0.6。A6中绘制数值轴a作为角轴,将最大值设为360度,间隔区属性设定与极轴相同。
A7中绘制线图元,设置数据属性后,同时设定首尾相连,闭合区域,并设定填充透明度为0,同时不绘制折点:
绘制结果如下:
下面我们修改这个画法,了解一下线图元还有哪些其它属性。
先来看Star Line属性,如果设为true,此时线图元绘制的并不是折线图,而是将各个端点与第一个点连接,绘制星形图。如修改A7中线图元的属性如下:
此时A8中绘图结果如下:
绘制星形图时,是无法构成闭合区域的,因此Connect head and tail,Closed area以及Area color等属性是无效的。
继续修改线图元的绘图参数,选定Step Line:
此时绘图结果如下:
选择Step Line属性后,绘制线图时,每两个点之间不是用直线连接的,而是使用一条竖直线和一条水平线来连接。这样就会绘制出阶梯状的线图,如果需要绘制脉冲图等类型的统计图,可以使用这个属性。当选择Step Line属性时,Star Line是无效的。
另外,线图元中还可以设定Stack type属性,在多系列多分类的统计图中,绘制堆积折线图。关于这一属性的使用,将在柱图元 中的堆积图部分讲述。