线图元

阅读(172) 标签: 线图元,

我们在12.5点图元 中,介绍了如何用逻辑坐标点定位图元。在这里,将继续研究线图元的情况。线图元也是最基本的图元之一,至少由两个逻辑坐标点定位;当逻辑坐标点大于两个时,可以连续绘制多条线。

线图元及其数据属性

下面的画法绘制的是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中绘制枚举轴作为横轴xA5中绘制数值轴作为纵轴y,并且设定了纵轴的最大最小值。特别的,横轴和纵轴的Allow regions属性均设为了false,不绘制坐标区域的间隔区,以便更清楚地看清线图元的绘制情况。

我们下面将主要研究A6中绘制的线图元。先来看A7中的绘制效果:

线图元至少需要两个坐标点,才能确定位置。设定数据坐标时,需要选定两个逻辑坐标轴,并分别设定逻辑坐标。

在这里,设定的逻辑坐标A2.(EVENT) A2.(SCORE) 均为序列,当设定的图元逻辑坐标大于两个点时,将绘制多条线。如果设定了一个逻辑坐标点,将无法绘制线图。

线图元的外观属性

我们从前面绘制的图形中可以看到,线图元绘制出线的端点及折点为自动填充颜色的圆点,在绘制折线图时,线图元可以视为带连线的点图元。因此,线图元的外观属性和12.5点图元 中的点图元的外观属性是一致的,需要注意的是,折线图元的线色、线宽、线型等属性,和点的边框属性是共用的。如,修改A6中的绘图属性,设置点形图的外观属性如下:

设定线为深蓝色虚线,线粗为2像素;Marker style为三角形,Marker weight设定为6个像素,并将Fill color改为浅蓝色。修改设定后,绘图如下:

 

从图中可以看到,折线的外观按照设定发生了改变。

线图元的填充区域

使用线图元,还可以在线围出的区域中填充颜色,绘制面积图等。如,修改A6中线图元的绘图属性如下:

在这里,勾选了Closed area属性,并设定了Area color,此时,绘图效果如下:

当选择了Closed area属性后,此时将填充绘制的折线与数据属性中设置的坐标轴Axis 1之间所围出的区域。

 

如果选定了Closed area属性的同,同时又将Connect head and tail属性选中,即编辑A6中的绘图代码,修改线图元绘图属性如下:

此时,绘图结果如下:

当选择了线图元首尾相连,又指定了闭合区域时,此时填充的区域将改为绘制的折线首尾相连后产生的闭合区域。

特别的,如果只需要绘制首尾相连的线形图,而不需要填充,那么可以在选定了Closed areaConnect head and tail属性的同时,再设定填充色的透明度为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,"regionTransparent":0.6)

 

 

6

=A1.plot("NumericAxis","name":"a","location":4,

"autoCalcValueRange":false,"maxValue":360,"scaleNum":6,

"regionLineStyle":0,"regionTransparent":0.6)

 

 

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行的代码循环计算样品点,并将它们的极坐标分别记录在参数radsangs中。A5中绘制数值轴r作为极轴,不绘制间隔线,间隔区透明度设为0.6A6中绘制数值轴a作为角轴,将最大值设为360度,间隔区属性设定与极轴相同。

A7中绘制线图元,设置数据属性后,同时设定首尾相连,闭合区域,并设定填充透明度为0,同时不绘制折点:

 

绘制结果如下:

 

下面我们修改这个画法,了解一下线图元还有哪些其它属性。

先来看Star Line属性,如果设为true,此时线图元绘制的并不是折线图,而是将各个端点与第一个点连接,绘制星形图。如修改A7中线图元的属性如下:

此时A8中绘图结果如下:

绘制星形图时,是无法构成闭合区域的,因此Connect head and tailClosed area以及Area color等属性是无效的。

 

继续修改线图元的绘图参数,选定Step Line

此时绘图结果如下:

选择Step Line属性后,绘制线图时,每两个点之间不是用直线连接的,而是使用一条竖直线和一条水平线来连接。这样就会绘制出阶梯状的线图,如果需要绘制脉冲图等类型的统计图,可以使用这个属性。当选择Step Line属性时,Star Line是无效的。

 

另外,线图元中还可以设定Stack type属性,在多系列多分类的统计图中,绘制堆积折线图。关于这一属性的使用,将在12.7柱图元 中的堆积图部分讲述。