Exporting ggplot2 grid to PDF error: 'Error in grid.Call.graphics... invalid font type'

Exporting ggplot2 grid to PDF error: 'Error in grid.Call.graphics... invalid font type'

我想知道你们中是否有人遇到过以下问题:当我尝试使用以下代码将绘图导出为 PDF 以保留透明度时:

    f <- function(x) {
  ans <- boxplot.stats(x)
  data.frame(ymin = ans$conf[1], ymax = ans$conf[2], y = ans$stats[3])
}

RTs.box = ggplot(mean.vis.aud.long, aes(x = Report, y = RTs, fill = Report)) + theme_bw() + facet_grid(Audio~Visual)
RTs.box + 

geom_boxplot(outlier.shape=1 ) + geom_hline(yintercept = .333, linetype = 3, alpha = .8) + theme(legend.position = "none") + ylab("Reposponse Times ms") + scale_fill_grey(start=.4) +
labs(title = expression("Visual Condition")) + theme(plot.title = element_text(size = rel(1)))+
theme(panel.background = element_rect(fill = "grey90"), panel.grid.minor = element_blank())+    stat_summary(fun.data = f, geom = "crossbar", 
            colour = NA, fill = "white", width = 0.75, alpha = .9)+
geom_boxplot(fill = "transparent", outlier.shape=1)+
theme(axis.title.y = element_text(vjust=0.5)) +
theme(axis.title.x = element_text(vjust=-0.5)) +
theme(text=element_text(size=30))+
theme(axis.title.x=element_text(size=40))+
theme(axis.title.y=element_text(size=40))+
theme(plot.title = element_text(size = 40, vjust=1))+ #vjust respositions text
coord_cartesian(ylim = c(0, 3000))+# This allows clipping of plot without dicarding data in analysis
scale_y_continuous(breaks = (seq(0,3000,by = 500)))+
theme(axis.text.y =element_text(size=17, (hjust=-.5)))+ # THIS CHANGES SIZE OF VALUES ON Y-AXIS
theme(panel.margin = unit(1.2, "lines"))# moves panels further apart

我收到以下错误:

'Error in grid.Call.graphics... invalid font type'

图像确实保存为 PDF,但所有轴文本尚未保存。

我试过导入库(extrafont),但无论我使用什么字体,都会出现同样的错误。

你们中有人以前遇到过这个问题吗&/或者你们对如何解决它有什么建议吗?

一如既往的感谢。

编辑:

这是 mean.vis.long 的一些示例数据:

Visual              Audio            Report  subject_nr    RTs
Right Circle 1st    2 Central Beeps  Right   10            717.6936
Right Circle 1st    Left Beep 1st    Left    10            540.0408
Right Circle 1st    1 Central Beep   SIM     10            540.0408
Right Circle 1st    No Beep          Right   10            717.6936
Right Circle 1st    Right Beep 1st   Left    10            540.0408
Right Circle 1st    Left Beep 1st    SIM     10            540.0408
Left Circle 1st     2 Central Beeps  Right   10            717.6936
Left Circle 1st     Left Beep 1st    Left    10            540.0408
Left Circle 1st     1 Central Beep   SIM     10            540.0408
Left Circle 1st     No Beep          Right   10            717.6936
Left Circle 1st     Right Beep 1st   Left    10            540.0408
Left Circle 1st     Left Beep 1st    SIM     10            540.0408
Left Circle 1st     2 Central Beeps  Right   10            717.6936
SIM Circle Pres     Left Beep 1st    Left    10            540.0408
SIM Circle Pres     1 Central Beep   SIM     10            540.0408
SIM Circle Pres     No Beep          Right   10            717.6936
SIM Circle Pres     Right Beep 1st   Left    10            540.0408
SIM Circle Pres     Left Beep 1st    SIM     10            540.0408

有3个视觉条件:Right Circle 1st; Left Circle 1st SIM Cirlce Presentation.

有5个音频条件:1个中央提示音; 2 次中央蜂鸣声;左蜂鸣声 1st;右哔声第一声;没有提示音。

并且有3个报告选项:左;正确的; SIM.

这个问题似乎是由 axis.title.xvjustsize)的多次覆盖引起的。我重新格式化了代码并做了一些清理,现在它可以正常工作了。

RTs.box <-  
  ggplot(mean.vis.aud.long, aes(x = Report, y = RTs, fill = Report)) + 
  geom_boxplot(outlier.shape=1 ) + 
  geom_hline(yintercept = .333, linetype = 3, alpha = .8) +
  stat_summary(fun.data = f, geom = "crossbar", 
               colour = NA, fill = "white", width = 0.75, alpha = .9) +
  facet_grid(Audio~Visual) + 
  scale_fill_grey(start = .4) +
  scale_y_continuous(breaks = (seq(0,3000,by = 500))) +
  ylab("Reposponse Times ms") + 
  ggtitle("Visual Condition")

RTs.box + 
  theme_bw() +
  theme(legend.position = "none") + 
  theme(plot.title = element_text(size = rel(1))) +
  theme(panel.background = element_rect(fill = "grey90"), 
        panel.grid.minor = element_blank()) +
  theme(panel.margin = unit(1.2, "lines")) + 
  theme(text = element_text(size=30)) +
  theme(axis.title.y = element_text(size=40, vjust=0.5)) +
  theme(axis.title.x = element_text(size=40, vjust=-0.5)) +
  theme(plot.title = element_text(size=40, vjust=1)) + 
  theme(axis.text.y = element_text(size=17, hjust=-.5))