环图元

阅读(1937) 标签: 环图元,

环图元仅供使用在极坐标中,通常用来绘制饼图。在这里,我们将来了解一下环图元的使用及各类绘图属性。

环图元及其数据属性

我们通过下面的跳马成绩饼图初步了解环图元的基本使用:

 

A

1

=canvas()

2

=demo.query("select * from GYMSCORE where Event = 'Vault'")

3

=A1.plot("BackGround")

4

=A1.plot("EnumAxis","name":"x","location":3,"polarX":0.55, "allowLabels":false)

5

=A1.plot("NumericAxis","name":"y","location":4,"allowLabels":false)

6

=A1.plot("Sector","axis1":"x","data1":A2.(NAME),"axis2":"y", "data2":A2.(SCORE),"text":A2.(NAME))

7

=A1.draw@p(400,300)

A1中建立画布。A2中获取绘图数据如下:

A3中绘制背景,A4中绘制枚举轴作为极轴xA5中绘制数值轴作为角轴y。特别的,横轴和纵轴的Allow Labels属性均设为了false,不绘制极坐标的刻度,以防止其干扰饼图。

A6中用环图元绘制饼图,这是我们在这里主要研究的图元。

先来查看A7中的绘制结果:

环图元在绘制饼图时,每一部分都会根据数据绘制一个扇形,这相当于内径为0的环形。绘图时使用的角轴是数值轴,根据各个运动员成绩的大小,各块扇形的圆心角也不同,所有扇形会累积拼成一个圆形。因此,饼图实际上类似于柱图 中绘制过的堆积柱图。与柱图类似,每个扇形只需要一个数值点,在绘图时会自动累积计算。A6中环图元的数据属性如下:

在这里,设定的逻辑坐标A2.(NAME) A2.(SCORE) 均为序列。与绘制柱图时不同,在绘制饼图时,作为极轴的枚举轴在单系列饼图中,只按照枚举值为1的情况解析,只绘制1个饼图。

环图元的外观属性

从前面绘制的图形中可以看到,环图元绘制的结果是有填充的扇形。因此,环图元的外观属性包括填充颜色,边框线粗线色等。默认情况下,环图元的填充自动完成,并绘制有光泽效果。现在,修改A6中代码为=A1.plot("Sector","borderWeight":1,"borderColor":-16724839,"fillColor":[["ChartColor",0,true,-52429,-13057,0],["ChartColor",0,true,-10066177,-3355393,0],["ChartColor",0,true,-13369345,-1,0]],"text":A2.(NAME),"axis1":"x","data1":A2.(NAME),"axis2":"y","data2":A2.(SCORE)),设置环图元的外观属性如下:

修改边框为1像素的绿线,并设置了扇形的填充颜色序列,绘图效果如下:

可以看到,饼图的绘制发生了改变。设定填充颜色时,默认时的光泽效果不再出现,而填充色的渐进效果会在整个区域中统一设置,以防止图形的填充颜色不协调。

 

另外,饼图中的标注与其它图形不同,标注文字由每个扇形中心用线引出,因此在绘图属性中,除了标注文字的属性外,还可以设定文字引导线的外观。继续修改A6中环图元的绘图属性如下:

绘图结果如下:

再来看标注文字属性,在上面的画法中,已经设定了标注文字为运动员姓名。下面继续修改A6中环图元的绘图属性:

在这里,修改了环图元的标注文字的字体、字型、字号和字色,修改后绘图结果如下:

可以发现,环图元的标注文字属性,同时包括饼图上的文字,以及用引导线引出的文字。

多系列饼图

类似累积柱图,饼图中也可以使用多个系列的数据,但是需要注意的是,和累积柱图不同,在多系列饼图中,每个系列的累积结果都是一个整圆或整圆环,因此实际上多系列饼图绘制的是多系列的占比图。如下面的体操各单项成绩占比扇图,为了便于查看数据,画法中A7绘制了图例:

 

A

1

=canvas()

2

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

3

=A1.plot("BackGround")

4

=A1.plot("EnumAxis","name":"x","location":3,"polarX":0.55,"polarY": 0.4,"allowLabels":false)

5

=A1.plot("NumericAxis","name":"y","location":4,"allowLabels":false)

6

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

7

=A1.plot("Legend","legendText":A2.id(EVENT),"columns":2,"x":0.2,"y":0.8)

8

=A1.draw@p(400,400)

在这里,仍然用枚举轴做极轴x,数值轴做角轴yA6中环图元的数据属性如下,注意其中的Data1,由分类数据“项目”和系列数据“姓名”共同组成:

A8的绘图结果如下:

可见,在多系列饼图中,极轴上的数据需要同时包括分类数据与系列数据。绘制时每个分类的数据会绘制为一个圆形或者一个环形。另外,此时用引导线拉出的标注将改为不同的分类。

默认情况下,环图元会绘制出占比饼图,此时在图中只能读出各位运动员分项目的占比情况。如果修改A6中环图元绘制时的堆积方式属性,如下:

这里将Stock type属性由默认的Stacked by percent改为了Stacked by value,这样在绘制时每个分类的数据会按照统计值累积,绘制结果如下:

可以看到,按统计值累积时,各运动员的图形将按分数累积绘制,绘制的结果也不再是整圆或整圆环。在这种情况下,与普通的堆积柱图类似,也可以从图中看出各运动员总分的比较情况。