使用ggplot2时持久无效的图形状态错误

时间:2013-11-22 22:20:21

标签: r ggplot2

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

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))

7 个答案:

答案 0 :(得分:320)

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

dev.off()

然后再次运行该剧情。我认为图形设备早先以某种方式通过导出一些图形而搞砸了并且它没有被重置。这对我有用,而且比重新安装ggp​​lot2简单。

答案 1 :(得分:7)

解决方案是简单地重新安装ggplot2。可能是您使用的R版本与已安装的ggplot2版本之间存在不兼容性。或者,在安装ggplot2之前可能出现问题,导致您看到的问题。

答案 2 :(得分:4)

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

解决方案:回到之前没有工作过的情节。以下面的控制台输出为例。图形边距(显示图形的窗口)太小而无法显示对(MinusInner)图。然后,当我尝试制作下一个qplot时,R仍然挂起以前的错误。

  

对(MinusInner)   plot.new()出错:数字边距太大   qplot(Sample.Type,BAE,data = MinusInner,geom =&#34; boxplot&#34;)   .Call.graphics中的错误(C_palette2,.Call(C_palette2,NULL)):     无效的图形状态

我通过展开绘图窗口并重新运行对(MinusInner)图来修复第一个错误。然后责备,它有效。

  

对(MinusInner)   qplot(Sample.Type,BAE,data = MinusInner,geom =&#34; boxplot&#34;)

答案 3 :(得分:4)

我发现在同一会话中将ggplot图表与绘图图表混合时会发生这种情况。使用&#39; dev.off&#39;保罗提出的解决方案解决了这个问题。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

尝试使用x11()win.graph()消除贪污,并解决此问题。

答案 6 :(得分:0)

重新启动 R(菜单>会话>重新启动 R 或 ⌘⇧F10)并重新运行我的代码解决了问题。