你在用R画图的时候,是否会遇到以下的麻烦:
- 加图例或文字时总是对不准坐标,要花很多精力调整元素的位置;
- 某个细节出错,整幅图得重新绘制;
- 想要更酷的平移、拉伸、旋转操作,就好像在Gimp或Photoshop里面一样;
- 想更方便地使用字体,特别是中文的显示。
于是接下来就有一个好消息和一个坏消息。好消息是有一个软件包可以解决上面的大部分问题了,而坏消息是这个包仍然处于开发阶段,所以各种bug是难以避免的。今天恰逢中秋,我便把这个自己编写的Layer软件包介绍给大家,算是送给大家的一份小礼物。
Layer顾名思义,指的是图层,而这个绘图设备正是采用了图层的思想。在你用Layer画图时,你可以将不同的图形元素放在不同的层上,彼此之间互不影响。例如,你可以将图例单独建立一个图层,当图例移动时,下层的图形并不会发生变化,再加上一定的鼠标操作,就可以方便地绘制出美观的图形。
为了让大家能直观地感受Layer的操作,下面给出了一段Layer的操作演示视频。
此外,Layer有着更方便的字体支持。在打开Layer图形设备时,你可以指定一个ttf字体文件作为图形字体的来源,如果参数为NULL,则图形会使用软件包自带的文泉驿微米黑字体。
Layer软件包的下载地址如下。需要说明的是,Layer需要GTK+环境的支持,对于Windows用户,如果你已经安装了GTK+环境,请选择第二个下载地址;如果尚未安装,可以直接下载第三个文件(软件包中附带了GTK+)。
源代码 Windows二进制包 Windows二进制包(含GTK+运行库)
果真有神迹。
终于等到了 。。。试了一下,太给力了,字体还是嵌入的!
反馈一下,后来指定中文字体后再画 R就直接崩了,不知是中间触动了什么机关,R session是干净的:
require(Layer)
Layer(7, 7, fontPath = '~/.fonts/FZFS_GBK.TTF')
plot(c(1,2,3))
错误信息:
R: cairo-ft-font.c:638: _cairo_ft_unscaled_font_lock_face: Assertion `!unscaled->from_face' failed.
换了几个TTF也一样,不知你那能否重现,用自带的wqy时好像也有点问题,有时就text()不上
Archlinux + R 2.13.1 + gcc 4.6.1
修一下bug,向CRAN挺进吧!
八成是FreeType读取字体时出了问题。我是最后一天才把字体支持加进去的,对FreeType的API完全不了解,随便到网上抄了两段就放进去了。缝缝补补又三年啊。
多语种的字体支持和嵌入很重要,我觉得你的工作非常实际而且有意义。