轴图元

阅读(177) 标签: 轴图元,

12.3坐标轴  中,介绍了各类逻辑轴的基本使用及数据属性设置。在定义了逻辑轴后,就可以通过选择合适的逻辑轴,将逻辑坐标转换为物理坐标,从而绘制各类图元。

集算器绘图时使用的坐标轴,不仅仅是逻辑轴,用来处理坐标转换的计算;同时,各类坐标轴本身也是图元,可以在绘图时根据需要调整绘图参数。下面,我们将继续了解轴图元的其它属性。

轴图元的轴线属性

12.1绘图基本流程 中,我们介绍了设定轴线的颜色、风格、粗度等的例子,这些都属于轴图元的外观属性;此外,还可以设定坐标轴的箭头样式,如下面的例子:

 

A

1

=canvas()

2

=demo.query("select * from GYMSCORE order by NAME")

3

=A1.plot("BackGround")

4

=A1.plot("EnumAxis","name":"x","axisColor":-16737895,"axisLineWeight":2,"axisArrow":256)

5

=A1.plot("NumericAxis","name":"y","location":2)

6

=A1.plot("Column","axis1":"x","data1":A2.(EVENT+","+NAME),"axis2":"y","data2":A2.(SCORE))

7

=A1.plot("Legend","legendText":A2.id(NAME),"x":0.81,"y":0.2,"width": 0.18)

8

=A1.draw@p(450,250)

A2中获得绘图数据如下:

在画法中,A4个设定了横轴的线色、线粗和箭头等属性:

绘图结果如下:

可以看到,绘图参数修改后,下方的横轴样式发生了变化。

轴图元的轴标题属性

在绘制坐标轴时,可以设定每个坐标轴的标题,用来说明坐标轴数据的含义等,设定轴标题时,需要设定文字以及外观等属性,如修改上一小节中的画法,将A4中的代码修改为=A1.plot("EnumAxis","name":"x","axisColor":-16737895,"axisLineWeight":2,"axisArrow":256,"title":"Event","titleFont":"Times New Roman","titleStyle":7,"titleColor":-16776961),设定横轴的轴标题属性如下:

设定横轴的标题文字为Event,并选择了Title font,修改了Title styleTitle color;设定Title indent属性可以调整标题文字距离刻度标签之间的距离;还可以设定Font size来调整标题文字的字号,或者设定Rotation angle来设定标题文字的倾斜角度。修改设定后,绘图如下:

从图中可以看到,横轴下方按设定绘制了标题。

轴图元的标签属性

在坐标轴上,可以按照需要显示刻度线及标签,以便于在坐标轴上读取对应统计值。与轴标题类似,也可以定义刻度标签的文字外观属性。如继续修改前面绘制统计图的画法,编辑A4中的代码,横轴的标签属性修改如下:

在画法中,修改了横轴的标签字体、风格、和字色。修改设定后,绘图如下:

从图中可以看到,横轴下方的刻度标签按照设定改变了外观,其中第三个刻度标签“BalanceBeam”由于和其它标签重叠,缺省不予绘制。

在标签属性中,还可以设定Indent属性可以调整标签文字距离坐标轴之间的距离;设定Rotation angle可以改变标签文字的倾斜角度;设定Label step可以使标签间隔若干刻度显示;选定Allow text overlapping可以允许标签文字重叠绘制(默认情况下,标签是不会重叠的,如果某个刻度标签会覆盖已有的标签文字,则不会绘制,如上图中的第3个标签BalanceBeam);也可以将Allow labels设为false,隐藏刻度标签。

轴图元的刻度线属性

在坐标轴上,标记刻度所在位置的短线就是刻度线,在画法中可以改变刻度线的StyleWeight等属性。如继续修改统计图的画法,编辑A5中的代码,纵轴的刻度线属性如下:

改变纵轴刻度线的位置为靠右或上,并改变刻度线粗度和刻度线长度。在标签属性中,还可以设定Display step属性来调整,间隔若干刻度绘制一条刻度线。修改设定后,绘图如下:

从图中可以看到,纵轴的刻度线产生了变化,需要注意的是,当刻度线的位置改变后,刻度标签的位置会随之改变,而且,刻度线的颜色和坐标轴的颜色是一致的。

轴图元的间隔区属性

在坐标区域内,可以绘制以刻度点为分界线的间隔区,以使统计图更美观易读。默认情况下,坐标轴上的背景间隔区间是白色和深蓝色交替的,可以在绘图属性中修改,如继续修改统计图的画法,继续编辑A5中的代码,设定纵轴的背景区间属性如下:

设定背景区间的Line style为默认的实线并设定了Line colorRegion colors,同时将Regiontransparency1.0改为0.5。在设定间隔区颜色时,使用了序列参数,在属性区的最右侧点击箭头按钮,即可在右侧的序列参数区中编辑。

修改设定后,绘图如下:

从图中可以看到,横向的间隔区按照设定发生了改变。在设定了间隔区颜色的情况下,需要调整间隔区的透明度,这样,不同坐标轴的间隔区才可以有叠加效果。

除了这些属性之外,还可以将Allow regions属性设为false,不绘制间隔区。

极坐标中使用间隔区

间隔区属性中的Polygonal region属性只有在极坐标系中才有效。如下面的体操成绩雷达图:

 

A

B

1

=canvas()

 

2

=demo.query("select * from GYMSCORE")

 

3

=A1.plot("BackGround")

=A1.plot("NumericAxis","name":"x","location":3, "autoCalcValueRange":false,"maxValue":16,"minValue":13, "scaleNum":3,"polarLength":0.24)

4

=A1.plot("EnumAxis","name":"y","location":4,"gapRatio":-0.5,"labelOverlapping":true)

=A1.plot("MapAxis","name":"colors","logicalData": A2.id(NAME),"physicalData":[-65536,-16711936,-16776961])

5

for A2.group(NAME)

=A1.plot("Line","endToHead":true,"closedArea":true, "transparent":0,"lineWeight":2,"lineColor":A5.NAME: "colors","axis1":"x","data1":A5.(SCORE),"axis2":"y", "data2":A5.(EVENT))

6

=A1.plot("Legend","legendText": A2.id(NAME),"x":0.81,"width":0.18, "legendType":3,"legendLineWeight":2, "legendLineColor":A2.id(NAME):"colors")

 

7

=A1.draw@p(500,300)

 

其中,A2中获取绘图数据,A3中绘制白色背景,B3中绘制数值轴x作为极轴,A4中绘制枚举轴y作为角轴。

特别的,在B4中设定了映射轴colors,属性如下:

映射轴和12.2坐标系与转换 中介绍的逻辑轴有所不同,它并非用来将数据转换为绘图位置,而是用来把数据转换为对应的属性值。在这里映射轴colors将运动员的姓名与颜色的整数值一一关联。

A5中循环每位运动员的数据,并在B5中分别绘制折线图,其中折线的颜色使用到了刚刚的映射轴colors

通过这样的设定,可以使每位运动员的折线图的线色与映射轴中的设定相同。

A6中,绘制图例,同样使用了映射轴colors

A7中的绘图结果如下:

在这里,我们还是主要来研究极坐标轴的间隔区属性。先编辑A4中的绘图属性,设定角轴即枚举轴y的间隔区颜色并勾选Polygonal region,同时修改Region transparency0.3,如下:

此时绘图结果如下:

可见,由于角轴选择了多边形区间,极坐标系的形状变为了多边形,此时,由于极轴未改变间隔区属性,因此间隔区仍旧为默认的圆环状。此时,再编辑B3中的绘图属性,修改极轴即数值轴x的间隔区属性,设定颜色并设定Polygonal region,同样修改Region transparency0.3,如下:

绘图结果如下:

修改后,极轴的间隔区也变为了多边环形。由于角轴与极轴的间隔区透明度均设定为了0.3,因此最终的图形中产生了叠色的效果。