【问题标题】:R can not find fonts to be used in plottingR找不到要用于绘图的字体
【发布时间】:2019-09-19 20:36:20
【问题描述】:

我使用的是 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

【问题讨论】:

    标签: r macos


    【解决方案1】:

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

    之后,我可以在theme() 中使用family-attribute 编辑字体:

    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-package,我也可以使用它。

    【讨论】:

    • 我尝试了您的建议,但没有任何改变。在font_import()之前我有34种字体。之后的金额是一样的。在font_import() 期间,我收到类似 /Library/Fonts/Arial.ttf 的消息:ArialMT 已在字体数据库中注册。跳过。 Ik 可以将 family-attribute in theme()` 与 Webdings 一起使用,但不能与 Arial 一起使用。
    • 谢谢 MrH。你让我走上了正轨。似乎 Arial.ttf 文件以某种方式损坏。我从我的另一台 Mac 上复制了它,现在它又可以工作了。
    【解决方案2】:

    平行于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)
    

    【讨论】:

      【解决方案3】:

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

      这两行从终端执行,解决了问题。不需要 font_add()。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 2021-03-15
        • 1970-01-01
        相关资源
        最近更新 更多