我正在寻找使用 LaTeX 字体在 R 中绘制图形的方法。
在 R的文档中pdfFonts
,它指出:
还有“ComputerModern”、“ComputerModernItalic”以及从 R 3.1.0 开始的“ArialMT”(Monotype Arial)的映射。
使用时pdf(file = outputFile, width=11.692, height=8.267, family = "ComputerModern")
我收到以下错误消息:
Error in pdf(file = outputFile, width = 11.692, height = 8.267, family = "ComputerModern", :
unknown family 'ComputerModern'
Execution halted
我正在使用R version 3.2.2 (2015-08-14)
。如何在 R 中使用 LaTeX 字体?最好不要安装额外的库。
答案1
这是我在 Windows 中执行的操作:
- 安装该
extrafont
包。 - 安装拉丁现代字体,例如来自http://www.fontsquirrel.com/fonts/latin-modern-roman。注意,你需要安装TTF 版本字体,
font_import()
无法处理 OTF。 - 使用 导入字体
font_import()
。 - 使用 加载字体
loadfonts(device = "win")
。使用device = "Win"
参数使 R Studio 中的预览正常工作。 - 使用 设置字体系列图形参数
par(family = "LM Roman 10")
。 - R Studio 中的绘图功能现已可用,pdf 导出功能也可用(见下图)。
这是您需要使用的完整代码:
# Run once
install.packages("extrafont")
library(extrafont)
# Install **TTF** Latin Modern Roman fonts from www.fontsquirrel.com/fonts/latin-modern-roman
# Import the newly installed LModern fonts, change the pattern according to the
# filename of the lmodern ttf files in your fonts folder
font_import(pattern = "lmodern*")
# Run each time
library(extrafont)
loadfonts(device = "win")
par(family = "LM Roman 10")
x <- seq(1, 10, 1)
y <- seq(1, 10, 1)
plot(y ~ x, main="This plot uses LaTeX font!", ylab = expression(alpha))
答案2
选定的解决方案。
如果不安装外部库,这似乎是不可能的。我尝试使用extrafont
,但我的默认 PDF 查看器没有使用的字体。
我最终使用了库tikzDevice
,它公开了方法/设备tikz
,其行为与设备完全相同pdf
,但输出的是TikZ
代码。这似乎更强大,因为字体完全取决于我的LaTeX
设置,我可以包含任意数学符号。
下面是我正在使用的代码,它用标准差误差线绘制我的算法的运行时间,并将输出写入文件.tex
。
tikz(file = outputFile, width=11.692, height=8.267)
ggplot(tgc, aes(x=E, y=wall.time, colour=Algorithm)) +
geom_errorbar(aes(ymin=wall.time-se, ymax=wall.time+se), width=.1) +
geom_point() +
xlab("Number of edges (|E|)") +
ylab("Wall time (secs)") +
ggtitle(paste0("Running time with |V| = ", dt$X.V.[1])) +
theme_bw()
endoffile <- dev.off()
答案3
我也尝试了几次,发现需要使用 来device=cairo_pdf
保存 pdf 图。它看起来像这样(顺便说一下,我用的是ggplot2
):
library(extrafont)
library(ggplot2)
d <- data.frame(x = seq(1, 10, 1), y = seq(1, 10, 1))
ggplot(d, aes(x, y)) +
geom_line() +
geom_point() +
theme(text=element_text(family="LM Roman 10", size=20)) +
ggtitle("This plot uses LaTeX font!")
ggsave("fig.pdf", width = 6, height = 4, device=cairo_pdf)
答案4
参考@Augustin 的回答,fontsquirrel 默认允许您下载 OTF 文件。OTF 和 TTF 文件虽然是相同的字体形状,但是
从库(extrafont)font_import(pattern =“lmodern*”)仅安装 TTF 文件。
要安装 TTF,请按照以下步骤操作。
- 打开网页https://www.fontsquirrel.com/fonts/latin-modern-roman
- 点击“Webfont Kit”,然后勾选“TTF”
- 点击“DOWNLOAD@FONT-FACE KIT”,下载包含TTF版本字体的zip文件。
- 安装“lmroman10-regular-webfont”
然后使用 font_import(pattern = "lmodern*")