knitr、cairo 和 ggplot2:在 PostScript 字体数据库中找不到字体系列 'Source Code Pro'
knitr, cairo and ggplot2: font family 'Source Code Pro' not found in PostScript fontdatabase
试图解决我拥有的 otf 字体的问题(参见 How to use otf-font in ggplot2 graphics?),我发现我可以将这些字体与 ggplot2 一起使用。
将 knitr 与 Rmd 文件一起使用是可以的:
---
title: "FontTest"
author: "me"
date: "22. April 2015"
output: html_document
---
```{r, echo=FALSE}
library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Arial"))
```
但是当我想使用 LaTeX(Rnw 文件)时出现错误:
\documentclass{article}
\begin{document}
\SweaveOpts{concordance=TRUE}
<<>>=
Sys.setenv(LANG = "en")
library(ggplot2, quietly=TRUE)
@
<<>>=
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Arial"))
@
\end{document}
这是错误:
Writing to file test.tex
Processing code chunks with options ...
1 : echo keep.source term verbatim (test.Rnw:6)
2 : echo keep.source term verbatim (test.Rnw:13)
Error in grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y, :
invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)
Execution halted
我正在使用 Mac OS X Mavericks。
更新
我找到了使用 Cairo 的解决方法:
\documentclass{article}
\begin{document}
<<>>=
Sys.setenv(LANG = "en")
library(ggplot2, quietly=TRUE)
library(Cairo)
@
<<dev='cairo_pdf'>>=
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Source Code Pro"))
@
\end{document}
但现在我收到很多警告:
## Warning in grid.Call(LtextBounds, as.graphicsAnnot(x$label), x$x,x$y, : font family 'Source Code Pro' not found in PostScript fontdatabase
我想避免抑制这些警告。那么我该怎么做才能摆脱这些警告呢?
我找到了以下解决方案:
我用
\usepackage{tikz}
和
<<plot, dev='tikz'>>
在我的 .Rnw 文件中。通过这种方式,我在绘图中获得了 LaTeX 项目的字体。
试图解决我拥有的 otf 字体的问题(参见 How to use otf-font in ggplot2 graphics?),我发现我可以将这些字体与 ggplot2 一起使用。
将 knitr 与 Rmd 文件一起使用是可以的:
---
title: "FontTest"
author: "me"
date: "22. April 2015"
output: html_document
---
```{r, echo=FALSE}
library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Arial"))
```
但是当我想使用 LaTeX(Rnw 文件)时出现错误:
\documentclass{article}
\begin{document}
\SweaveOpts{concordance=TRUE}
<<>>=
Sys.setenv(LANG = "en")
library(ggplot2, quietly=TRUE)
@
<<>>=
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Arial"))
@
\end{document}
这是错误:
Writing to file test.tex
Processing code chunks with options ...
1 : echo keep.source term verbatim (test.Rnw:6)
2 : echo keep.source term verbatim (test.Rnw:13)
Error in grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y, :
invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)
Execution halted
我正在使用 Mac OS X Mavericks。
更新
我找到了使用 Cairo 的解决方法:
\documentclass{article}
\begin{document}
<<>>=
Sys.setenv(LANG = "en")
library(ggplot2, quietly=TRUE)
library(Cairo)
@
<<dev='cairo_pdf'>>=
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(gear))) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Source Code Pro"))
@
\end{document}
但现在我收到很多警告:
## Warning in grid.Call(LtextBounds, as.graphicsAnnot(x$label), x$x,x$y, : font family 'Source Code Pro' not found in PostScript fontdatabase
我想避免抑制这些警告。那么我该怎么做才能摆脱这些警告呢?
我找到了以下解决方案:
我用
\usepackage{tikz}
和
<<plot, dev='tikz'>>
在我的 .Rnw 文件中。通过这种方式,我在绘图中获得了 LaTeX 项目的字体。