我在R中制作了一些图.生成的PDF在iPhone等iOS设备上无法正常显示.例如,这是一个以PDF格式创建的股票ggplot2图:
library(ggplot2)
mpg.eg <- within(mpg[1:74,], {
model <- reorder(model, cty)
manufacturer <- reorder(manufacturer, -cty)
})
pdf(file="figures/ios-example.pdf")
p <- qplot(cty, model, data=mpg.eg)
p + facet_grid(manufacturer ~ ., scales="free", space="free") +
opts(strip.text.y = theme_text())
dev.off()
Run Code Online (Sandbox Code Playgroud)
在iPhone上查看时,不会显示点图中的点.例如,如果您使用的是iOS设备,请参阅生成的pdf.
我从阅读文档中了解到,这很可能是有限的字体可用性和iOS上的PDF渲染变幻莫测的问题,而不是R中的pdf创建问题.我曾经想过可能在PDF中嵌入字体
embedFonts("figures/ios-example.pdf")
Run Code Online (Sandbox Code Playgroud)
会解决问题,但事实并非如此.除了让这个数字以其他格式提供之外,我还能做些什么来解决这个iOS问题吗?
embedFonts默认情况下不嵌入标准 PDF 字体集,因此实际上不会对您的示例 PDF 进行任何重大更改。试试吧
embedFonts("figures/ios-example.pdf",
options="-dSubsetFonts=true -dEmbedAllFonts=true")
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,也可以-dPDFSETTINGS=/printer在那里加上“ ”。
[编辑 2020 年 8 月:使用当前版本的 R,要尝试的另一件事是从pdf设备切换到cairo_pdf设备。cairo_pdf使用更复杂的 PDF 生成库,除其他外,它还嵌入了字体本身。]
不过,就其价值而言,您的示例在我必须使用的唯一 iOS 设备(iPad,操作系统版本 4.2.1)上正确显示。
您也可以尝试告诉 R 不要使用 Dingbats 字体来绘制点: pdf(..., useDingbats = F)