R找不到要在绘图中使用的字体

时间:2019-05-01 08:28:17

标签: r macos

我正在使用R 3.5.2。在Mac Mojave 10.14.4上。几天以来,我的标准绘图中的文字出现问题。用ggplot绘制图也不起作用。我收到消息说:

对于标准地块:

  

警告消息:   1:在doTryCatch(return(expr),name,parentenv,handler)中:    找不到“ Arial”家族的字体

对于具有ggplot2的图:

  

grid.Call(C_textBounds,as.graphicsAnnot(x $ label),x $ x,x $ y,
中的错误   :找不到多边形边缘

欢迎提出任何可以继续解决问题并解决问题的建议?

我已经尝试过的以下步骤:

  1. 转到“字体”书和禁用的反应字体。重新启动计算机
  2. 将R升级到R 3.6.0。
  3. 对于标准绘图,每次都可以使用par(family = "Arial")作为解决方法,但这不适用于ggplot2。
  4. 在字体书中重新安装了标准字体。
  5. 我在R中安装了extrafont软件包。键入fonts()时,所有字体都显示为已安装。

根据MacOSX,所有字体均已安装,有效且没有重复,但我仍然无法使用R访问它们。

这是我正在测试的代码:

x <- seq(1, 10,1)
y <- rnorm(10, 4,1)
plot(y~x)

library(ggplot2)

# Basic normal curve
p  <- ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
  stat_function(fun = dnorm, size=1.5)
p

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用font_import()?之后,fonts()为我提供了我可以使用的新字体(以前没有的字体)。

然后,我可以使用family中的theme()-属性编辑字体:

x <- seq(1, 10,1)
y <- rnorm(10, 4,1)
plot(y~x)

library(ggplot2)
library(extrafont)

fonts()
font_import(prompt = TRUE)
fonts()

# Basic normal curve
p  <- ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
  stat_function(fun = dnorm, size=1.5) + theme(text = element_text(family = "Arial"))
p

更新: 即使没有extrafont软件包,我也可以使用它。

答案 1 :(得分:0)

extrafont平行,这是使用showtext的解决方案。

library(showtext)
font_add("Arial", "/Library/Fonts/Arial.ttf")  # Use the actual file path
showtext_auto()

x <- 1:10
y <- rnorm(10, 4, 1)
pdf("plot1.pdf")
plot(y ~ x, family = "Arial")
dev.off()

library(ggplot2)
# Basic normal curve
p <- ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
    stat_function(fun = dnorm, size = 1.5) +
    theme(text = element_text(family = "Arial"))
ggsave("plot2.pdf", p)

答案 2 :(得分:0)

建议将建议的行放在主目录.rprofile文件中。如果您家中没有此文件,请创建一个。每次您启动R会话时都会执行该命令。但是,此修复程序只为我提供了有效的屏幕图像-当我去复制石英窗口并将其粘贴到另一个应用程序(例如“预览”)时,它不起作用。

从终端执行的这两行代码解决了该问题。不需要font_add()。

iMac:〜> cd / Users / MyUserName / Library / Fonts

iMac:Fonts> cp / Library / Fonts / Arial *。