r - 在 Ubuntu 上使用 R 获取抗锯齿绘图

标签 r ubuntu graphics plot x11

我升级了我的系统并重新安装了 R,现在我的标准 X-11 图没有抗锯齿——它们看起来有锯齿,字体看起来也很糟糕。

我似乎记得过去有过这样的问题,但不记得我做了什么。

一些其他信息:

  • qplot 也没有消除锯齿
  • 绘制到 png 设备也会产生非抗锯齿输出
  • 然而,绘制到 pdf 设备会产生漂亮的抗锯齿输出

另一件事:我已经运行这个版本的 R/Ubuntu 一段时间了,大约几个月。我不知道这个绘图问题是在安装新的 R 后立即开始的,还是在那之后我做了一些事情来解决它。我不记得以前注意到缺乏抗锯齿,但我可能没有注意或做很多绘图。

有人知道怎么解决吗?目前我正在使用 Ubuntu 14.04.3 LTS 运行从源代码编译的 R 3.2.1。

还有一些事情。正在关注the discussion here我尝试安装 Cairo,但失败了。此外,我过去无需安装 Cairo 就可以在 R/linux 中获得非抗锯齿图,如果没有必要,我宁愿不安装额外的东西。

这是我的 X11.options():

$display
[1] ""

$width
[1] NA

$height
[1] NA

$pointsize
[1] 12

$bg
[1] "transparent"

$canvas
[1] "white"

$gamma
[1] 1

$colortype
[1] "true"

$maxcubesize
[1] 256

$fonts
[1] "-adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*"
[2] "-adobe-symbol-medium-r-*-*-%d-*-*-*-*-*-*-*"

$family
[1] "sans"

$xpos
[1] NA

$ypos
[1] NA

$title
[1] ""

$type
[1] "Xlib"

$antialias
[1] "default"

最佳答案

我正在运行 R 3.4.0,默认情况下,X11()png() 得到抗锯齿线、“点”和绘图轴设备。

但是,为了获得消除锯齿的文本,需要在我的系统上安装某些“Microsoft 字体”包。我不能代表 Ubuntu,但在 Arch Linux 上,包名称是“ttf-ms-fonts”和“fontconfig-ttf-ms-fonts”,两者都在 AUR 中。良好的 Google 搜索应该会为您自己的系统找到类似的软件包。

这是安装和未安装“ttf-ms-fonts”的 png() 设备生成的一些图。

  • 没有“ttf-ms-fonts”:

brownian-motion-no-msfonts

  • 使用“ttf-ms-fonts”:

brownian-motion-with-msfonts

我希望可以看到两个绘图中的线条和圆圈都消除了锯齿,但只有第二个绘图具有消除锯齿的文本。

这是我用来生成上述图的代码:

set.seed(1);
brownian=cumsum(runif(1e3,min=-1));
png("brownian-no-msfonts.png",height=400);
par(cex=1.3);
plot(brownian,ylim=c(-10,15),
    ylab="Position",xlab="Time",main="Brownian Motion");
lines(brownian+7);
dev.off()

我已经确认我需要“ttf-ms-fonts”和“fontconfig-ttf-ms-fonts”(我认为后者配置默认使用的某些字体)以获得抗锯齿R 中的文本,尽管只需要第一个包,例如在 Firefox 中获取消除锯齿的文本。

但是,我一直在玩“knitr”包,我注意到如果我使用“rmarkdown”包中的“render”编译我的文档,那么它可以生成带有或不带有“ttf”的抗锯齿图-ms-fonts”软件包已安装。我还没弄清楚它是怎么做到的。我知道它运行 Pandoc 生成带有嵌入式字体的 HTML,但我不确定“rmarkdown”包本身是否包含字体,或者它是否只是更好地了解在我的系统上哪里可以找到好的字体。

我觉得花时间在这上面很肤浅,但无论如何。

关于r - 在 Ubuntu 上使用 R 获取抗锯齿绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717992/

相关文章:

regex - 在 R 中分解 PascalCase

r - 如何从数字对象中提取数字

python - 如何使 Lux 包在 Python 中工作?

linux - Postfix 后队列内容过滤器不起作用

django - (2)没有那个文件或目录 : mod_wsgi (pid=24507)

c++ - 舍入大纲的开始和结束

ios - 可以关闭 Metal 中的多缓冲/双缓冲吗?

r - 包开发: Multiple files or Single File

使用带有 longtable 选项的 xtable 时重复标题

ubuntu - 我将我的 IPython 从 3.x 更新到 4.1.2,之后 Spyder 无法再加载 IPython 控制台