Ggplot2 grid export to PDF error: "Error in grid.Call.graphics ... invalid font type"

I was wondering if any of you were faced with the following problem: When I try to export the graph to PDF to save transparencies using the following code:

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 

I get the following error:

enter image description here

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

The image is saved as a PDF, but all axis texts are NOT saved.

I tried to import the library (extrafont), but I get the same error, no matter what font I use.

Did any of you have this problem before & / or do you have suggestions for solving it?

Thanks, as always.

Edit:

Here are some sample data for 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 

There are 3 visual conditions: right circle 1; Presentation of the 1st Left Circle SIM card.

There are 5 sound conditions: 1 central sound signal; 2 central sound signals; Left Beep 1st; Right Beep 1st; There is no sound signal.

And there are 3 report options: Left; Right; SIM

+5
source share
1 answer

The problem is apparently caused by multiple overriding of axis.title.x (with vjust and size ). I reformatted the code and did some cleanup, and now it works correctly.

 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)) 
+2
source

All Articles