Persistent invalid graphics state error when using ggplot2

RGgplot2

R Problem Overview


I believe my dataframe is okay and my code is okay. In fact, I have eliminated parts of the dataframe and most of the graphing code to make things as basic as possible. But still, I get:

Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : 
  invalid graphics state

What is wrong here? Here is the data:

 date	trt	var	val
1/8/2008	cc	sw5	0.2684138
1/8/2008	cc	sw15	0.2897586
1/8/2008	cc	sw5	0.2822414
2/8/2008	cc	sw5	0.2494583
2/8/2008	cc	sw5	0.2692917
2/8/2008	cc	sw15	0.2619167
2/8/2008	cc	sw5	0.204375
3/8/2008	cc	sw5	0.2430625
3/8/2008	cc	sw5	0.2654375
3/8/2008	cc	sw5	0.2509583
3/8/2008	cc	sw5	0.2055625
1/8/2008	ccw	sw15	0.2212414
1/8/2008	ccw	sw5	0.3613448
1/8/2008	ccw	sw5	0.2607586
2/8/2008	ccw	sw5	0.2087917
2/8/2008	ccw	sw15	0.3390417
2/8/2008	ccw	sw5	0.2436458
2/8/2008	ccw	sw5	0.290875
3/8/2008	ccw	sw5	0.20175
3/8/2008	ccw	sw15	0.328875
3/8/2008	ccw	sw5	0.2328958
3/8/2008	ccw	sw5	0.2868958

When I work with this data, I specify dates like this:

df<-df[order(as.Date(df$date,format="%d/%m/%Y")),,drop=FALSE]

and here I want to make a scatterplot:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))

R Solutions


Solution 1 - R

I ran into this same error and solved it by running:

dev.off()

and then running the plot again. I think the graphics device was messed up earlier somehow by exporting some graphics and it didn't get reset. This worked for me and it's simpler than reinstalling ggplot2.

Solution 2 - R

I found this to occur when you mix ggplot charts with plot charts in the same session. Using the 'dev.off' solution suggested by Paul solves the issue.

Solution 3 - R

The solution is to simply reinstall ggplot2. Maybe there is an incompatibility between the R version you are using, and your installed version of ggplot2. Alternatively, something might have gone wrong while installing ggplot2 earlier, causing the issue you see.

Solution 4 - R

You likely don't need to reinstall ggplot2

Solution: go back to plot that didn't work previously. Take the below console output for example. The figure margins (the window that displays your plots) were too small to display the pairs(MinusInner) plot. Then when I tried to make the next qplot, R was still hung up on previous error.

> pairs(MinusInner) Error in plot.new() : figure margins too large > qplot(Sample.Type, BAE,data=MinusInner, geom="boxplot") Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : invalid graphics state

I fixed the first error by expanding the plot window and rerunning the pairs(MinusInner) plot. Then blam, it worked.

> pairs(MinusInner) > qplot(Sample.Type, BAE,data=MinusInner, geom="boxplot")

Solution 5 - R

I solved this by clearing all the plots in the console and then making sure the plot area was large enough to accommodate what I was creating.

Solution 6 - R

To add, an easy fix if you're using RStudio will be expanding the size of your plot windows/area by dragging it apart. Basically, this problem occurred because your current plot window is smaller than required to display the plot.

Solution 7 - R

try to get out grafics with x11() or win.graph() and solve this trouble.

Solution 8 - R

Restarting R (Menu>Sessions>Restart R or ⌘⇧F10) and re-running my code fixed the problem.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNazerView Question on Stackoverflow
Solution 1 - RpaulView Answer on Stackoverflow
Solution 2 - RErnieView Answer on Stackoverflow
Solution 3 - RPaul HiemstraView Answer on Stackoverflow
Solution 4 - RDjBabyKangarooView Answer on Stackoverflow
Solution 5 - RDaisyView Answer on Stackoverflow
Solution 6 - RRaphael IdeweleView Answer on Stackoverflow
Solution 7 - RMauroMardonesView Answer on Stackoverflow
Solution 8 - RNick VenceView Answer on Stackoverflow