使用 ggplot2 时持续出现无效的图形状态错误
Posted
技术标签:
【中文标题】使用 ggplot2 时持续出现无效的图形状态错误【英文标题】:Persistent invalid graphics state error when using 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))
【问题讨论】:
你试过(重新)安装ggplot2吗? 我将此添加为答案,这样其他人可以更轻松地找到答案。您可以通过单击我的答案旁边的勾号来接受答案。只是为了确认一下,您最初安装了ggplot2
?
是的,已经安装好了。
重启 R 会话解决了我的问题。
仅供参考 - 如果您尝试构建太小的使用图形尺寸(例如,尝试以英寸为单位提供尺寸而不指定单位),也会出现此问题。
【参考方案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()
不起作用,这可以是第二步。以上是关于使用 ggplot2 时持续出现无效的图形状态错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 ggplot2 对象和自定义字体从终端运行 R 脚本(字体类型无效)
您能否在应用程序提交状态“无效二进制”中出现错误“无效的 Swift 支持”和“缺少所需的图标文件”提供帮助?
当动态图形设备切换处于活动状态时,OS X 上的 SDL/OpenGL 出现无数警告
R语言ggplot2可视化:错误条(error bar)在图形上是水平的但是在图例中是垂直的使用ggstance包纠正过来(图例图标也是水平的)