【问题标题】:Display of ggplot crashes R显示 ggplot 崩溃 R
【发布时间】:2018-03-09 14:25:03
【问题描述】:

我正在尝试使用 ggplot2-package 中的 ggplot() 创建一个绘图,但是当我执行我的代码时,R 会立即崩溃,例如:

library(ggplot2)
library(data.table)

ggplot(data=dt, aes(x=year, y=value, fill=variable)) +
    geom_bar(stat="identity", width=0.85)

这发生在多个版本的 RStudio 和 RGUI 中(与 here 描述的问题相反)。对ggplot 的任何调用都会发生这种情况,即使使用数据帧而不是 data.table 作为输入也是如此。

当我将绘图保存在单独的对象中时,它不会立即崩溃。但是,一旦我尝试打印情节,一切都会崩溃。

test_plot <- ggplot(data=dt, aes(x=year, y=value, fill=variable)) +
    geom_bar(stat="identity", width=0.85)
print(test_plot)

我可以在ggplot2-package 之外生成图就好了。

我已经看到ggplot2 导致崩溃的报告,但这些都是两年前的事情,被认为是 RStudio 错误,这里似乎不是这种情况。

有没有人看到这种行为,更重要的是,我该如何解决?

编辑:

当我不打印绘图时也会发生这种情况,但尝试使用ggsave() 保存它:

ggsave("test.png", test_plot, device = "png")

数据和会话信息

dt <- structure(list(year = c("2014", "2015", "2016", "2014", "2015", 
        "2016"), variable = c("1", "1", "1", "2", "2", "2"), value = c(82.1, 
        47.8, 60.8, 706.6, 580.2, 128.4)), .Names = c("year", "variable", 
        "value"), class = c("data.table", "data.frame"), row.names = c(NA, 
        -6L), .internal.selfref = <pointer: 0x102009f78>)

sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_2.2.1       data.table_1.10.4-3

loaded via a namespace (and not attached):
[1] colorspace_1.3-2 scales_0.5.0     compiler_3.4.3   lazyeval_0.2.1   plyr_1.8.4       tools_3.4.3      pillar_1.2.1     gtable_0.2.0    
[9] tibble_1.4.2     yaml_2.1.18      Rcpp_0.12.15     grid_3.4.3       rlang_0.2.0      munsell_0.4.3   

【问题讨论】:

  • 我无法重现您的问题。 ggplot(data=dt, aes(x=year, y=value, fill=variable)) + geom_bar(stat="identity", width=0.85) 对我来说很好。请注意,ggplot(...) 命令中缺少右括号。在test_plotggplot(...) 命令中也缺少它。
  • 你试过安装ggp​​lot2的开发版吗? devtools::install_github("tidyverse/ggplot2")
  • 添加了缺少的括号,谢谢。我刚刚尝试了您的建议,@MarcoSandri 但问题仍然存在。

标签: r ggplot2 rstudio


【解决方案1】:

通常,此类问题可以通过确保 ggplot2 以及它所依赖的任何 R 包是最新的来解决。您可以尝试以下方法:

deps <- tools::package_dependencies("ggplot2", recursive = TRUE)$ggplot2
for (dep in deps) {
  try(install.packages(dep))
}

这可能最终会重新安装您可能已经安装的一些软件包,但这并没有什么坏处。

【讨论】:

  • 我对答案有点犹豫,因为我两天前刚刚安装了所有东西,但它终于可以工作了!非常感谢你。不过,“原样”的代码运行并不顺利。我从deps(通过sessionInfo()$basePkgs)中删除了基础包,现在我有了我的地块!
  • 太棒了!令人沮丧的事情之一是,有时安装顺序可能很重要(例如,如果您安装了依赖于 pkg B 的 pkg A,但 pkg B 在安装时太旧了),因此您可能会遇到这种形式的问题。
  • 谢谢!这也解决了我的 ggplot2 在 R 4.1.0 中崩溃的问题。
猜你喜欢
  • 2021-08-10
  • 1970-01-01
  • 2017-02-12
  • 2015-04-07
  • 1970-01-01
  • 2022-01-10
  • 2019-03-06
  • 1970-01-01
相关资源
最近更新 更多