我在 R
中使用 ggplot
创建绘图,使用 tikzdevice
保存它们,然后使用 latex
将它们编译成更大的文档。
当我创建一个非常简单的图时,例如
require(ggplot2)
require(tikzDevice)
tikz("test.tikz", height = 4, width = 4)
ggplot(data = data.frame(x = c(1:3), y = c(1:3)), aes(x=x, y=y)) +
geom_point() +
theme(text = element_text(family = "sans", face = "bold"))
dev.off()
虽然我可以使用 theme
中的 element_text
选项更改大小和字体,但更改字体系列不起作用。 IE。导出的 tikz
不包含 sans-serif 命令。
如何使用无衬线字体导出图形(尤其是轴标签)?
最佳答案
tikz()
将输出 latex 代码。字体将是此 latex 文档中指定的字体(这很棒,因为这会产生一致的外观)。
使用 sans-serif 字体创建一个独立的图形,然后可以通过 pdflatex test.tikz
渲染,可以这样实现:
require(ggplot2)
require(tikzDevice)
options(tikzLatexPackages =
c(getOption("tikzLatexPackages"),
"\\renewcommand{\\familydefault}{\\sfdefault}\n")
)
tikz("test.tikz", height = 4, width = 4, standAlone = TRUE)
ggplot(data = data.frame(x = c(1:3), y = c(1:3)), aes(x=x, y=y)) +
geom_point()
dev.off()
我们通过 options
传递写入序言的附加文本。我们需要向默认选项添加新选项而不是覆盖它们,这就是我们连接 getOption("tikzLatexPackages")
的原因。另请注意,您必须在 R 字符串中转义 \
。
第二个重要部分是设置 standAlone = TRUE
如果我们想单独渲染图形而不是让它成为更大文档的一部分。
如何在latex文档中设置字体我还是觉得有些玄乎。我的解决方案基于 this question .但是您可以通过 options
传递其他 latex 命令,以不同的方式设置字体。
关于R tikzdevice : How to use sans serif font,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442808/