【问题标题】:Save R plot with Mars and Venus symbols as pdf将带有火星和金星符号的 R 图另存为 pdf
【发布时间】:2014-07-29 22:08:40
【问题描述】:

我正在尝试保存具有女性 (\u2640) 和男性 (\u2642) 符号的图。这是一个使用此符号创建绘图的示例(我使用的是 RStudio):

gender <- rbinom(n=100, size=100, prob=0.5)
plot(gender, cex=2.5,
       pch=ifelse(gender %% 2 == 0, -0x2642L, -0x2640L),
       col=ifelse(gender %% 2 == 0, 2, 3), main="\u2640 and \u2642 Symbols")

它可以工作并使用这些符号Plot 生成一个图。我可以将其另存为图片 (PNG),但是当我尝试将其另存为 pdf 时,所有符号都不会显示 Plot

这是我尝试将其保存为 pdf 的方法:

pdf("plot.pdf")
gender <- rbinom(n=100, size=100, prob=0.5)
plot(gender, cex=2.5,
       pch=ifelse(gender %% 2 == 0, -0x2642L, -0x2640L),
       col=ifelse(gender %% 2 == 0, 2, 3), main="\u2640 and \u2642 Symbols")

dev.off() 

我在这里看到另一个关于类似问题的帖子,建议使用 CairoPDF。那没起效。我尝试了其他家庭设置,但它也不起作用。是否有任何其他解决方法可以将其保存为带有这些符号的 pdf,或者将其保存为图片的唯一方法。我宁愿把它保存为pdf。

经过大量尝试后,我切换到命令行并使用石英。绘制我使用的图表后:

quartz.save(type = 'pdf', file = 'output.pdf')

完美运行。为什么它不能使用第一个代码 pdf("plot.pdf") 但适用于quartz.save(type = 'pdf', file = 'output.pdf')?是不是我的系统有问题?

谢谢。

【问题讨论】:

  • 您使用的是什么操作系统? (或者更好,发布sessionInfo()的输出)
  • > sessionInfo() R 版本 3.1.0 (2014-04-10) 平台:x86_64-apple-darwin13.1.0 (64-bit) 语言环境:[1] C 附加基础包:[1 ] stats graphics grDevices utils datasets methods base 通过命名空间加载(未附加):[1] tools_3.1.0
  • pdf 切换到 cairo_pdf 并保持其他所有内容不变应该适合您。

标签: r pdf plot


【解决方案1】:

在我的 Mac 上,这提供了一个带有占星符号的 pdf。 (通过搜索 SO 上的类似问题拼凑而成。)我没有付出额外的努力来整齐地“包装”全套,所以“后来的印刷品不会出现,但你可以看到火星和金星.

cairo_pdf("Venus_Mars.pdf",family="ArialUnicodeMS")
plot(1,1)
TestUnicode <- function(start="263c", end="2653", ...)
  {
    nstart <- as.hexmode(start)
    nend <- as.hexmode(end)
    r <- nstart:nend
    s <- ceiling(sqrt(length(r)))
    for(i in seq(r)) {
      try(points(.6+(i/10), .8 , pch=-1*r[i],...))
    }
  }
 TestUnicode()
dev.off()

【讨论】:

  • 谢谢。它使用开罗工作。我收到的警告消息主要是这两个:Cairo:“Fontconfig 错误:无法加载默认配置文件”和“Fontconfig 警告:忽略 en_US_POSIX.UTF-8:不是有效的区域标签”。然后我在一个谷歌小组中找到了一个关于类似问题的帖子。有人建议来自r.research.att.com 的 R 补丁版本可以解决此问题。确实如此。
  • 推荐有用的答案被认为是一种很好的形式。如果您想在另一个答案中发布您自己的信息并选中标记为最佳分析器,这也是一种很好的形式。
  • 我实际上试图支持你的答案。我只需要 2 更多的声誉来做到这一点:P
  • 哦。让我脸红。谢谢你让我知道。我没有意识到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2021-09-21
相关资源
最近更新 更多