在showtext的font_add_google函数中,字体无法加载。

5

我正在尝试绘制一些数据,我的代码如下:

library('ggplot2')
library('tidyr')
library('ggthemes')
library('showtext')

font_add_google('Syncopate', 'Syncopate')
showtext_auto()

ggplot(aes(x = X, group=1), data = glassdoor)+
  geom_line(aes(y = col1, color = 'red'))+
  geom_line(aes(y = col2, color = 'blue'))+
  geom_line(aes(y = col3, color = 'magenta'))+
  geom_line(aes(y = col4, color = 'yellow'))+
  theme(text = element_text(family = "Syncopate"))+
  ggtitle('A Long Test Title')

Syncopate是一种独特的字体,可以在这里看到。但我的可视化字体只是像这样(这是一个测试图表,请忽略其整体质量): enter image description here 但如果我加载像Times New Roman这样的系统主题,它就能正常工作。为什么我的Google字体在使用showtext时没有加载? 编辑 Jrakru的答案有效,但请记住您必须运行整个代码块:新字体将出现在保存的PNG文件中,但不会出现在预览窗口中。这并不是针对答案的批评,而是为其他人提供帮助,比如我自己,他们期望字体出现在RStudio控制台中,因此省略了代码中的ggsave和png部分。

1
在定义字体之后,尝试加载 ggplot2 库。 - Jrakru56
请参见 https://dev59.com/V1sW5IYBdhLWcg3w2aOK#51906008/ - Tung
@Jrakru56,这似乎也不起作用:(,除非我误解了你的意思。 - snapcrack
2个回答

6

showtext的GitHub页面提到:

这个例子可以在大多数图形设备上运行,包括pdf()、png()、postscript()以及像Windows上的windows()和Linux上的x11()这样的屏幕设备。

如果您仔细阅读,就会发现RStudioGD图形设备不受支持。我第一次阅读时并没有注意到这点。只有在阅读更详细的vignette时才知道。

注意:目前,showtext无法与RStudio的内置图形设备配合使用,因此建议在原始R控制台中运行下面的代码或使用其他图形设备,例如x11()和windows()

请参见https://cran.rstudio.com/web/packages/showtext/vignettes/introduction.html

有了以上知识,我们可以这样做:

library('tidyr')
library('ggthemes')
library('showtext')

font_add_google("Schoolbell", "bell")
showtext_auto()

library('ggplot2')

df<- data.frame(x=1:10, y=101:110)

options("device" = "windows")

win.graph(10,10,12)

ggplot(data = df) +
  geom_line(aes(x,y))+
  theme(text = element_text(family = "bell"))+
  ggtitle('A Long Test Title')


ggsave("showtext-example.png", width = 7, height = 4, dpi = 96)

options("device" = "RStudioGD")

就这样!输入图片描述

附:我假设您是Windows用户。


你的意思是在选项中定义设备时应该使用 x11 吗?我尝试了一下,好像不起作用 :( - snapcrack
你是在使用MacOS吗?如果是的话,我想你们使用的应该是quartz - Jrakru56
在Ubuntu上,当我切换到x11时,它仍然对我不起作用。 - snapcrack
不,它只是生成了我在问题中创建的相同可视化效果 :( - snapcrack
showtext 的 Github 上创建一个问题可能是值得的。png()ggsave() 也不起作用吗? - Jrakru56
嗯...看起来png()和ggsave()实际上是有效的,但它在预览窗口中不起作用,这就是我所能做到的了。我会将此问题标记为已解决,但我会在我的问题中加上一条注释,说明答案仅适用于保存的文件。非常感谢您的帮助,对于混淆/未完全遵循答案,我表示抱歉。 - snapcrack

4
根据同一文档:https://cran.rstudio.com/web/packages/showtext/vignettes/introduction.html 在底部可以阅读到以下内容:
与RStudio的兼容性 从0.9版本开始,showtext可以与RStudio图形设备(RStudioGD)很好地配合使用。只需在RStudio会话中调用showtext_auto(),然后图表将正确显示。 在我的RStudio 1.3.959中也行得通。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接