【问题标题】:Graphics error while knitting from Rmarkdown to PDF从 Rmarkdown 编织到 PDF 时出现图形错误
【发布时间】:2021-05-23 08:05:12
【问题描述】:

我有一个使用 3 个库的 Rmarkdown 文件:extrafont,ggplot2,dplyr。编织此文档后,我必须生成 PDF。但它给了我一个错误如下:

Quitting from lines 21-52 (A6.3.Rmd) 
Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  : 
  invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)

当我编织到 HTML 时,情况并非如此。它工作正常。

下面是代码:

library(ggplot2)
library(extrafont)
library(dplyr)

df <- data.frame(x = c(1,2,2,3,3.5,4,4.5,5,5.5,6,1.5,2,2,2,2,1.5,2.5,3,3,3,3,5.5,5,6,5.5,7)
                 ,y = c(2,1,2,2,2,2,2,2,1.5,2,2.5,3,3.5,4,4.5,3.5,3.5,2,3,3.5,4,2.5,3,3,4,3.5)
                 )

# helper dataframe for axis
df_arrow <- data.frame(x = c(0, 0),
                       y = c(0, 0),
                       xend = c(0, 8),
                       yend = c(8, 0)) 


ggplot(df,aes(x, y)) + 
  geom_point(colour = "blue", size = 5)+
  scale_x_continuous(breaks = 1:7, expand = expansion(add = c(0, 1)))+
  scale_y_continuous(breaks = 1:7, expand = expansion(add = c(0, 1)))+
  coord_fixed(xlim = c(0, 7), ylim = c(0, 7), clip = "off")+
  geom_segment(data = df_arrow, aes(x = x, xend = xend, y = y, yend = yend), size = 0.75, colour = "black",
               arrow = arrow(angle = 20, length = unit(3, "mm"), ends = "last", type = "closed"), linejoin = "mitre") +
  annotate("text", x = c(7.8, 0.3), y = c(0.3, 7.8), label = c("italic(x)", "italic(y)"), parse = TRUE, size = 6,  family = "Arial Narrow")+
  labs(x = NULL,
       y = NULL)+
  theme_bw()+
  theme(panel.grid.major = element_line(colour = "gray80"),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        axis.ticks.length = unit(1, "mm"),
        text = element_text(size = 18,  family = "Arial Narrow"))

另外还有 2 个相似的块给出了略有不同的图。

不确定它是否与我正在使用的 extrafont 库有关。

当我检查这个错误时,它指定了这个代码块。

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    问题在于family = "Arial Narrow"

    如果您在这两行中删除family = "Arial Narrow"

    1. annotate("text", x = c(7.8, 0.3), y = c(0.3, 7.8), label = c("italic(x)", "italic(y)"), parse = TRUE, size = 6, family = "Arial Narrow")+
    2. text = element_text(size = 18, family = "Arial Narrow"))

    编织到 pdf 将起作用:

    【讨论】:

    • 哦,谢谢你,但我现在收到这个错误:! Package inputenc Error: Unicode character − (U+2212) (inputenc) not set up for use with LaTeX.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2019-03-07
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2020-06-05
    相关资源
    最近更新 更多