使用ggplot2时持续出现无效的图形状态错误


119

我相信我的数据框还可以,我的代码也可以。实际上,我已经消除了数据框的一部分和大多数图形代码,以使事情变得尽可能基本。但是,我仍然得到:

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

怎么了 数据如下:

 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

当我处理这些数据时,我会指定以下日期:

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

在这里我想做一个散点图:

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

3
您是否尝试过(重新)安装ggp​​lot2?
Paul Hiemstra,

我将此添加为答案,这样其他人可以更轻松地找到答案。通过单击我的答案旁边的对勾,您可以接受答案。只是为了确认,您最初ggplot2安装的是?
Paul Hiemstra

是的,它已经安装了。
Nazer 2013年

3
重新启动R会话解决了我的问题。
克里斯

仅供参考-如果您尝试构造使用尺寸过小的尺寸(例如,尝试在未指定单位的情况下以英寸为单位提供尺寸),也会出现此问题。
基思·休吉特

Answers:


353

我遇到了同样的错误,并通过运行解决了它:

dev.off()

然后再次运行该图。我认为该图形设备之前通过导出一些图形以某种方式被弄乱了,并且没有重置。这对我有用,并且比重新安装ggp​​lot2简单。


1
这可以解决问题,但是您对它为什么会有所了解吗?
Pedro Cavalcante

2
@PedroCavalcanteOliveira在使用par(mfrow = c(..., ...))之前,我遇到了问题。不了解其他图形参数,但它们可能会导致此问题。
loki

1
它有帮助,但是有什么用?
vasili111

9

解决方法是简单地重新安装ggplot2。您正在使用的R版本与的已安装版本之间可能不兼容ggplot2。或者,在ggplot2较早安装时可能出了点问题,从而导致您看到此问题。


4
感谢您在此处保留此答案。尽管另一个答案比较简单,dev.off()但对我却不起作用,这是尝试重新安装ggp​​lot2的不错的第二选择。
纳泽尔2014年

最好先尝试dev.off(),比重新安装软件包花费更少的时间。如果dev.off()不起作用,这可以是第二步。
杰森目标

6

我发现在同一会话中将ggplot图表与绘图图表混合时会发生这种情况。使用Paul建议的'dev.off'解决方案可以解决此问题。


是什么dev.off'呢?
vasili111

4

您可能不需要重新安装ggp​​lot2

解决方案:返回到以前无法使用的绘图。以下面的控制台输出为例。图形边距(显示绘图的窗口)太小,无法显示对(MinusInner)绘图。然后,当我尝试制作下一个qplot时,R仍然挂在先前的错误上。

对(MinusInner)plot.new()中的错误:图形边距太大qplot(Sample.Type,BAE,data = MinusInner,geom =“ boxplot”).Call.graphics(C_palette2,.Call(C_palette2,NULL)中的错误):无效的图形状态

我通过扩展绘图窗口并重新运行pairs(MinusInner)绘图来解决了第一个错误。然后责骂,它起作用了。

对(MinusInner)qplot(Sample.Type,BAE,data = MinusInner,geom =“ boxplot”)


0

我通过清除控制台中的所有图并确保图区域足够大以容纳我创建的内容来解决了这一问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.