使用 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))
190704 次浏览

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

我遇到了同样的错误,通过跑步解决了它:

dev.off()

然后再次策划阴谋。我认为图形设备在早些时候由于导出了一些图形而出了问题,没有得到重置。这对我来说很有用,而且比重新安装 ggplot2要简单。

您可能不需要重新安装 ggplot2

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

对(内减) New ()中的错误: 图边距太大 Qplot (Sample.Type,BAE,data = MinusInside,geom = “ boxplot”) 在. Call.graph (C _ palette2,. Call (C _ palette2,NULL))中出错: 无效的图形状态

我通过展开绘图窗口并重新运行对(MinusInside)绘图修复了第一个错误。

对(内减) Qplot (Sample.Type,BAE,data = MinusInside,geom = “ boxplot”)

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

我通过清除控制台中的所有绘图,然后确保绘图区域足够大来容纳我正在创建的内容,从而解决了这个问题。

尝试用 x11()win.graph()取出图形并解决这个问题。

重新启动 R (Menu > Sessions > Restart R or something F10)并重新运行我的代码修复了这个问题。

要添加,一个简单的修复,如果您使用 RStudio 将扩大您的绘图窗口/区域的大小,通过拖动它分开。基本上,出现这个问题是因为当前的绘图窗口小于显示绘图所需的窗口。