r - 无法使用 ggsave() 在 PDF 中嵌入 ggplot2 (/R) 字体
问题描述
我在我的 ggplot2-plot 中添加了一种字体,在 RStudio 的绘图查看器中查看时效果很好。但是,当我尝试将绘图保存为 PDF 时,根本不会打印任何文本(请参见下面的代码和图片):
df <- data.frame(x = c(1:10), y = c(1:10)) # Dummy data
plot <- ggplot(df, aes(x, y)) + # Dummy plot
geom_point() +
labs(title = "Correct font in R, NO fonts at all in pdf :-(") +
theme(text = element_text(family = "latex"))
然后我尝试使用以下代码 ggsave() 绘图:
ggsave("df_plot.pdf",
plot = plot,
device = "pdf",
dpi = 320)
但我收到一条错误消息:
grid.Call.graphics 中的错误(C_text,as.graphicsAnnot(x$label),x$x,x$y,:无效的字体类型
下面是正确字体的图(在 RStudio 中)+ 写入我的 pdf 文件的图(根本没有字体):
我在这里想念什么?我用 extrafont 包尝试了各种东西,但是 pdf 也不在那里打印字体(如果打印了一些东西,它只是默认字体)。
解决方案
实际上,ggsave()
对我来说似乎工作得很好。错误实际上是添加theme(text = element_text(family = "latex"))
到情节。
稍微调整一下例子,
df <- data.frame(x = c(1:10), y = c(1:10)) # Dummy data
plot <- ggplot(df, aes(x, y)) + # Dummy plot
geom_point() +
labs(title = "Correct font in R, NO fonts at all in pdf :-(")
ggsave("df_plot.pdf",
plot = plot,
device = "pdf",
dpi = 320)
#Saving 10.7 x 8.01 in image
但,
plot + theme(text = element_text(size=10, family="LM Roman 10"))
产生您发现的错误:
grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的错误:未找到多边形边。
此问题已在此处得到解答: Grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : Polygon edge not found
这些建议对你有用吗?
推荐阅读
- c# - 特征列“特征”的架构不匹配:
- python - 使用`threading.Thread`的烧瓶后台任务正在阻塞主线程
- sql - 在分区内向上移动非 NULL 值
- flutter - 如何防止后退按钮返回上一页
- plotly - 根据列值更改绘图标记形状/符号
- ruby-on-rails - 从数据库调用它以使用rails加载背景图像时从url中删除“/”
- python - 如何使用 exe 文件仅在本地部署烧瓶 GUI Web 应用程序?
- node.js - 我如何保持时间偏移?
- javascript - 使用nodejs fs.writeFile在文件中写入相同的格式
- arrays - 如何在 Julia 中获取数组的大小?