将ggplot2网格导出为PDF错误:'grid.Call.graphics中的错误...无效的字体类型'

Doc*_*oct 8 pdf fonts r ggplot2 axis-labels

我想知道你们是否遇到过以下问题:当我尝试将绘图导出为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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

在此输入图像描述

'grid.Call.graphics中的错误...无效的字体类型'

图像确实保存为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
Run Code Online (Sandbox Code Playgroud)

有三种视觉条件:右圆1号; Left Circle 1st SIM Cirlce Presentation.

有5个音频条件:1个中央蜂鸣声; 2个中央蜂鸣声; 左哔1号; 右哔1; 没有哔哔声.

并且有3种报告选项:左; 对; SIM卡.

ton*_*nov 6

axis.title.x该问题似乎是由(withvjust和)的多次覆盖引起的size。我重新格式化了代码并进行了一些清理,现在它可以正常工作了。

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))
Run Code Online (Sandbox Code Playgroud)