【问题标题】:Persistent invalid graphics state error when using ggplot2使用 ggplot2 时持续出现无效的图形状态错误
【发布时间】:2013-12-07 23:11:11
【问题描述】:

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

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

【问题讨论】:

  • 你试过(重新)安装ggp​​lot2吗?
  • 我将此添加为答案,这样其他人可以更轻松地找到答案。您可以通过单击我的答案旁边的勾号来接受答案。只是为了确认一下,您最初安装了ggplot2
  • 是的,已经安装好了。
  • 重启 R 会话解决了我的问题。
  • 仅供参考 - 如果您尝试构建太小的使用图形尺寸(例如,尝试以英寸为单位提供尺寸而不指定单位),也会出现此问题。

标签: r ggplot2


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试使用x11()win.graph() 解决这个问题。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        dev.off()
        

        然后再次运行情节。我认为图形设备在早些时候通过导出一些图形而被搞砸了,但它没有被重置。这对我有用,而且比重新安装 ggplot2 更简单。

        【讨论】:

        • 这解决了问题,但你知道为什么会这样吗?
        • @PedroCavalcanteOliveira 在我之前使用过par(mfrow = c(..., ...)) 之后,我遇到了问题。不知道其他图形参数,但它们可能会导致此问题。
        • 它有帮助,但有什么用?
        • 运行graphics.off()也为我工作。根据 R 文档,“graphics.off() 会关闭所有打开的图形设备。”
        【解决方案5】:

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

        【讨论】:

        • dev.off' 是做什么的?
        【解决方案6】:

        您可能不需要重新安装 ggplot2

        解决方案:返回以前不起作用的情节。以下面的控制台输出为例。图形边距(显示图的窗口)太小而无法显示对(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")

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 感谢您在此处保留此答案。虽然另一个答案更简单,dev.off() 对我不起作用,尝试重新安装 ggplot2 是一个不错的第二选择。
          • 最好先试试dev.off(),比重新安装包花的时间少。如果dev.off() 不起作用,这可以是第二步。
          猜你喜欢
          • 1970-01-01
          • 2011-12-30
          • 1970-01-01
          • 2019-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-16
          • 1970-01-01
          相关资源
          最近更新 更多