使用 R + knitr 和“pdf”设备时绘图符号无法正确显示

使用 R + knitr 和“pdf”设备时绘图符号无法正确显示

当我使用 knitr 将 R 图包含在 latex 文档中时,如果 knitr 的图形设备是“pdf”,则符号无法正确显示,而如果图形设备是“png”,则一切正常。以下是 MWE:

\documentclass{article}

<<>>=
library(knitr)
library(survival)
attach(lung)
@ 

\begin{document}

A sample figure with default 'pdf' device.

<<>>=
plot(age, meal.cal)
@ 
\clearpage

Same figure, with 'png' device.

<<dev='png'>>=
plot(age, meal.cal)
detach(lung)
@ 
\end{document}

结果如下:https://drive.google.com/open?id=1fz_6XuDxdDWNhX_EWRnUYInSG-pklkuA

第一个图表中没有画出圆圈,而第二个图表则很好。有什么建议吗?

答案1

R 中的默认pdf设备使用 ZapfDingbats 字体中的字符来表示图形中的圆圈。但是,该字体未嵌入 pdf 文件中,因此当找不到字体或合适的替换字体时,pdf 查看器不会显示圆圈(为 R 辩护:ZapfDingbats标准 14 种字体之一,即 Times、Helvetica、Courier、Symbol 和 ZapfDingbats 的几种变体。请参阅使用该pdf设备创建的 pdf 文件的字体属性: 在此处输入图片描述

可以使用该cairo_pdf设备代替。该设备不使用字体中的圆形字符(直接绘制圆形)。而且,所有字体都是嵌入的。

相关代码:

\begin{document}

A sample figure with default 'pdf' device.

<<dev='cairo_pdf'>>=
plot(age, meal.cal)
@ 
\end{document}

字体属性示例: 在此处输入图片描述

请注意,cairo_pdf圆圈不可选择/搜索,但这不太可能成为问题。

相关内容