中秋献礼——Layer图形设备

你在用R画图的时候,是否会遇到以下的麻烦:

  • 加图例或文字时总是对不准坐标,要花很多精力调整元素的位置;
  • 某个细节出错,整幅图得重新绘制;
  • 想要更酷的平移、拉伸、旋转操作,就好像在Gimp或Photoshop里面一样;
  • 想更方便地使用字体,特别是中文的显示。

于是接下来就有一个好消息和一个坏消息。好消息是有一个软件包可以解决上面的大部分问题了,而坏消息是这个包仍然处于开发阶段,所以各种bug是难以避免的。今天恰逢中秋,我便把这个自己编写的Layer软件包介绍给大家,算是送给大家的一份小礼物。

Layer顾名思义,指的是图层,而这个绘图设备正是采用了图层的思想。在你用Layer画图时,你可以将不同的图形元素放在不同的层上,彼此之间互不影响。例如,你可以将图例单独建立一个图层,当图例移动时,下层的图形并不会发生变化,再加上一定的鼠标操作,就可以方便地绘制出美观的图形。

为了让大家能直观地感受Layer的操作,下面给出了一段Layer的操作演示视频。

此外,Layer有着更方便的字体支持。在打开Layer图形设备时,你可以指定一个ttf字体文件作为图形字体的来源,如果参数为NULL,则图形会使用软件包自带的文泉驿微米黑字体。

Layer软件包的下载地址如下。需要说明的是,Layer需要GTK+环境的支持,对于Windows用户,如果你已经安装了GTK+环境,请选择第二个下载地址;如果尚未安装,可以直接下载第三个文件(软件包中附带了GTK+)。

源代码 Windows二进制包 Windows二进制包(含GTK+运行库)
发表评论?

4 条评论。

  1. 果真有神迹。

  2. 终于等到了 。。。试了一下,太给力了,字体还是嵌入的!

    反馈一下,后来指定中文字体后再画 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完全不了解,随便到网上抄了两段就放进去了。缝缝补补又三年啊。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>