环图元仅供使用在极坐标中,通常用来绘制饼图。在这里,我们将来了解一下环图元的使用及各类绘图属性。
我们通过下面的跳马成绩饼图初步了解环图元的基本使用:
|
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中绘制枚举轴作为极轴x,A5中绘制数值轴作为角轴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,数值轴做角轴y。A6中环图元的数据属性如下,注意其中的Data1,由分类数据“项目”和系列数据“姓名”共同组成:
A8的绘图结果如下:
可见,在多系列饼图中,极轴上的数据需要同时包括分类数据与系列数据。绘制时每个分类的数据会绘制为一个圆形或者一个环形。另外,此时用引导线拉出的标注将改为不同的分类。
默认情况下,环图元会绘制出占比饼图,此时在图中只能读出各位运动员分项目的占比情况。如果修改A6中环图元绘制时的堆积方式属性,如下:
这里将Stock type属性由默认的Percent stacked改为了Stacked,这样在绘制时每个分类的数据会按照统计值累积,绘制结果如下:
可以看到,按统计值累积时,各运动员的图形将按分数累积绘制,绘制的结果也不再是整圆或整圆环。在这种情况下,与普通的堆积柱图类似,也可以从图中看出各运动员总分的比较情况。