#r #r-markdown
Вопрос:
У меня есть файл Rmarkdown, в котором используются 3 библиотеки: 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
библиотекой я работаю.
когда я проверяю эту ошибку, она указывает именно на этот блок кода.
Ответ №1:
Проблема в том, что family = "Arial Narrow"
Если вы удалите family = "Arial Narrow"
в этих двух строках:
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")
text = element_text(size = 18, family = "Arial Narrow"))
Ссылка на pdf будет работать:
Комментарии:
1. О, спасибо за это, но теперь я получаю эту ошибку:
! Package inputenc Error: Unicode character − (U 2212) (inputenc) not set up for use with LaTeX.