图例是统计图中的重要组成部分,在图例中可以解释统计图中各种颜色或者符号所代表的内容。图例中,一种颜色或者符号,以及它的说明文字,构成一个图例项,而图例项的位置并不容易根据横轴或者纵轴的逻辑坐标来定位,因此,集算器中的图例,本身就是一种特殊的逻辑轴。
下面,我们在12.3.3枚举轴这一小节中见过的水果单价柱形图中添加图例:
|
A |
1 |
=canvas() |
2 |
=demo.query("select * from FRUITS") |
3 |
=A1.plot("BackGround") |
4 |
=A1.plot("EnumAxis","name":"x","categories":A2.(NAME)) |
5 |
=A1.plot("NumericAxis","name":"y","location":2) |
6 |
=A1.plot("Column","axis1":"x","data1":A2.(NAME),"axis2":"y","data2": A2.(UNITPRICE)) |
7 |
=A1.plot("Legend","legendText":A2.(NAME),"x":0.81,"y":0.2,"width":0.18) |
8 |
=A1.draw@p(350,200) |
在A7中添加了图例图元的代码,设定了图例数据及其位置如下:
其中,图例的坐标设定与逻辑轴是相似的,其中X和Y确定图例区的左上角的物理轴坐标。需要注意的是,当图例区的Width或Height设为0时,将按照图例区所需的尺寸自动设定,如上图中的Height属性。
设置完成后,绘图结果如下:
从结果中可以看到,当图例区的文字在设定宽度内放置不下时,会自动折行显示。当未设定图例项的填充颜色时,会自动生成;当图形中的柱图颜色也是自动生成,且顺序与图例项一致时,就能够正确显示。
但是,当两者的顺序不同,或者是多系列多分类的统计图中,情况如何呢?我们再来看下面的例子,在体操成绩簇状柱图中添加图例:
|
A |
1 |
=canvas() |
2 |
=demo.query("select * from GYMSCORE") |
3 |
=A1.plot("BackGround") |
4 |
=A1.plot("EnumAxis","name":"x") |
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) |
在A7中添加了图例图元的代码,设定了图例数据及其位置如下:
绘图结果如下:
在这里,我们可以发现一些问题:图例中数据对运动员的姓名做了排序,使得顺序无法与柱图中对应,图例和图形并不相符。为了避免这样的情况,应该保持数据的顺序一致,如将A2中的代码改为=demo.query("select * from GYMSCORE order by NAME")。此时,绘图结果如下:
由于绘图数据已经按照姓名做了排序,此时的图例和图形就可以对应了。