集算器中的图形功能十分自由,用户可以通过绘图编辑来设定图形参数以及绘图所需数据,也可以通过绘图函数绘制所需的各种格式的统计图。
我们先来看一看下面绘制跳马比赛成绩柱形图代码,以此来了解在集算器中绘图的一般流程:
|
A |
1 |
=canvas() |
2 |
=demo.query("select * from GYMSCORE where EVENT = 'Vault'") |
3 |
=A1.plot("NumericAxis","name":"y","location":2,"labelFont":"Calibri", "labelOverlapping":true) |
4 |
=A1.plot("EnumAxis","name":"x","categories":A2.(NAME), "labelFont":"Arial") |
5 |
=A1.plot("Column","axis1":"x","data1":A2.(NAME),"axis2":"y", "data2":A2.(SCORE),"text":A2.(SCORE)) |
6 |
=A1.draw@p(450,350) |
在使用集算器绘图时,首先要做的就是定义画布,如A1中的代码=canvas()。在集算器中,图形的数据和绘制参数的设定,以及绘图的完成,都是在特定的画布中处理的。通常情况下,一个画布对象完成一个统计图的绘制。
A2中取出绘图数据所在的序表如下:
在画布中,可以绘制的各类统计图,都是由基本的图形单元构成的,这些图形单元统称为图元,图元可以完成具有相同特征的一类图形的绘制,使用图元可以简化绘图过程,只需设定基本图元的绘制参数,可以绘制各类常用统计图。A3,A4和A5中的代码=A1.plot(…),就是在A1的画布中绘制图元的函数。其中A3中绘制的纵轴图元是数值轴NumericAxis,A4中绘制的横轴图元是枚举轴EnumAxis,A5中绘制的图元是柱图元Column。横轴、纵轴和柱图元,共同组成了柱形图。可以看到,绘制不同的图元时,使用的绘图参数也是不同的。
图元都设置完毕后,就可以绘制图形了。A6中的代码=A1.draw@p(450,350),就是用来绘图的函数,绘图时可以指定图形的宽高,也可以设定图片类型。如A6中指定图形宽度为450像素,高度为350像素,并用@p选项设定图片类型为png。使用G.draw() 函数在画布G中绘制图形时,如果未使用任何选项,输出的图片类型默认为svg类型的矢量图,除了@p选项之外,还可以用@j选项指定输出jpg类型图片,用@g选项指定输出gif类型图片。
在集算器中,通过一系列代码,可以完成整个图形的绘制,这些代码称为画法,集算器通过执行画法,就可以由绘图机绘制出所需的图形。
我们先来看一下上面画法绘制图形的效果。完成计算后,选择绘制图形代码所在的A6格,在右上方的值显示区中,点击Browse graphics按钮,即可执行绘图:
另外,也可以在单元格A6上按下鼠标右键,在右键菜单中选择Browse graphics执行绘图(也可选中A6后在菜单栏中点击 Edit>Browse graphics):
上面的画法,完成的图形将在弹出的窗口中显示,窗口尺寸可以拖拽调整,绘图结果如下:
在图形显示窗口中,提供了存储及复制功能,可以将图形存为本地图片文件,或者复制粘贴到其它工具(如word,画图等)中使用。
从上面的例子可以了解,在集算器中的图形绘制,可以分为三步完成:
1. 用canvas() 函数生成画布对象。
2. 用G.plot() 函数分布绘制所需图元。
3. 用G.draw() 函数绘制图形。
由于集算器中可以选择的图元种类较多,每个图元都有很多可以设置的参数,而不同的图元的参数设定也有很大区别,因此用G.plot() 函数绘制图元是很复杂的。为此,集算器提供了图元绘制的可视化编辑,使图元绘制参数的设定及修改变得简易。
在需要绘制图元的单元格中,按下鼠标右键,在右键菜单中选择Graphics editor,即可编辑绘图代码 (也可以在菜单栏中点击 Edit>Graphics editor):
绘图的编辑可以在弹出的可视化编辑窗口中完成:
在窗口顶端,左侧的下拉列表中可以选择画布,右侧的下拉列表中选择所需绘制的图元。选择完毕后,窗口下方会变为选定图元的绘图参数列表:
在上面的绘图参数列表中,可以设定数值轴图元的各个相关属性。数值轴图元的属性介绍以及具体使用方法,将在轴图元 中进一步讲述。其它类型的图元,将在线图元,文本图元 等章节中分别讲述
在图元参数设定完成后,将在单元格中自动生成相应的绘图串表达式=G.plot(…),绘图串表达式生成后,在单元格中,仍然可以选择Graphics editor来修改绘图参数,在修改绘图时,已经选定的画布以及图元种类是不能改变的。如果确实需要改变画布或者图元种类,可以直接修改表达式,或者删除表达式后重新绘制图元。
在图形的各类图元中,有一些属性是比较通用的,如字色、填充色、线型、字体等。下面,我们来了解一下相关内容。为了明确图形的绘图区域大小,在后面的例子中,不再使用底色透明的png格式图形,而改用底色为白色的png格式图形。
在图形中,线是重要的组成部分,比如坐标轴、图元边框、折线等等。线色、风格和粗度都是线的绘制属性,在图元属性编辑的列表中,可以进行设定。
设置线色时,可以点击Value一栏中的色块,弹出调色板如下:
在调色板中,可以选择所需的颜色。也可以用其它方式,如选择Color Swatches在色板中挑选颜色:
此外,也可以直接在Exp.一栏中用表达式设定颜色对应的整数值。
集算器为统计图提供了多种配色方案,存于[安装目录]\esProc\config\chartcolor.properties。用户可以根据自己的喜好添加或修改自带的配色方案。此用法也适用于其他颜色属性设置,读取方法可参考《函数参考》f.property()。
设置线的风格时,点击属性值一栏中的线型,可以在下拉框中选择:
集算器中提供了常见的线型,包括:直线、虚线、点线、点划线、双点划线、无。同样也可以直接在Exp.一栏中用线型代码设定。
线的粗度则直接用像素值设定。
例如,我们修改刚才见到的柱形图的画法,改变纵轴的轴线属性如下:
轴线的颜色设为了蓝色、风格改为虚线,粗度增大为2个像素,此时,画法代码如下:
|
A |
1 |
=canvas() |
2 |
=demo.query("select * from GYMSCORE where EVENT = 'Vault'") |
3 |
=A1.plot("BackGround") |
4 |
=A1.plot("NumericAxis","name":"y","location":2,"axisColor":-16776961, "axisLineStyle":2,"axisLineWeight":2,"labelFont":"Calibri", "labelOverlapping":true) |
5 |
=A1.plot("EnumAxis","name":"x","categories":A2.(NAME), "labelFont":"Arial") |
6 |
=A1.plot("Column","axis1":"x","data1":A2.(NAME),"axis2":"y", "data2":A2.(SCORE),"text":A2.(SCORE)) |
7 |
=A1.draw@p(450,350) |
其中,A3中插入了一行,绘制图形的白色背景。由于刚刚修改了A4中绘制纵轴的参数,其中的代码也会随之改变。修改后,绘图结果如下:
可以看到,纵轴发生了变化。
填充颜色
对于各类图元,填充颜色都是最为常用的属性,通过对填充颜色的设定,可以使图形更为美观,也可以使得数据的比较更鲜明直观。
设置填充颜色时,可以点击Value一栏中的色块,弹出设置颜色窗口。如在前面的例子中,继续修改A3中背景图元的填充如下:
这里将背景图的填充色改为浅蓝色,同时去除Gradient color设定,不使用渐进色。修改后,单元格中的代码同样会随之改变。此时绘图结果如下:
可以看到,所有背景图被修改为了浅蓝色。设置填充色时,还可以使用渐进色。勾选Gradient color,并设置Color2以及Angle后,可以在设置颜色面板左下方的预览区中看到填充色效果预览,如下:
绘图结果如下:
文字的基本属性
文字在图形中也是必不可少的组成部分,对于各个位置出现的文字,它们的字体、字型字色等属性均可分别设置。
编辑字体属性时,可以在下拉列表中选择系统中存在的字体:
字号属性可在下拉列表中选择,也可在属性值表达式中直接按像素设置:
编辑文字风格属性时,可以在字体样式编辑框中设置:
字色属性的编辑类似于线的基本属性这一小节中线色的设定。
例如,我们继续修改跳马比赛成绩柱形图,将横轴标签的字体、字号、字型、字色等属性改变:
修改后,图形绘制如下:
可以很明显地看到横轴标签文字外观的变化。
黑白填充模式
通常情况下,图元的填充色是使用彩色模式的,此时可以选择填充时使用的颜色或者渐进效果。但是有时绘图时无法使用多种颜色,如使用单色打印机时是无法呈现不同颜色效果的,此时如果仍然使用彩色填充模式打印的效果就会是不同深度的灰色,不易辨别。这种情况下可以选择黑白填充模式。
如继续修改上面的图形,修改A6中柱图的填充属性Fill Color如下:
将填充样式Fill style修改为竖线,修改后,A7中绘图效果如下:
可以看到,修改后,柱图的填充效果变为了黑白线条绘制,设置填充样式时,默认的填充效果都是黑白模式的,即只由黑白灰颜色的线条或色块填充图形。其实这样设置后,三个柱图效果相同,是不能区分不同运动员的图形的,可以用序列参数设置填充属性:
如把Fill Color属性设为下面的序列:
修改后,A7中的绘图结果如下:
此时,即使使用黑白打印机,也可以通过图形的不同填充效果分辨了。
实际上,在设置填充样式时,也可以不使用默认的黑白模式,而重新设置颜色,如:
此时的绘图效果也会随之改变:
通过设置填充样式可以使得绘图效果更为丰富,但是需要分别设置各个图形的填充样式。