You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RStudio正常运行的ggplot饼图代码在Kaggle报错求助

问题:Kaggle中ggplot饼图代码报错无法运行

这段ggplot饼图代码在RStudio中运行完全正常,但在Kaggle环境中执行时报错,无法生成图形:

pie_type_user <- data.frame(rider_type = c("Member", "Casual"), 
                            values = c(2189031, 1537785))

ggplot(pie_type_user, aes(x = "", y = values, fill = rider_type)) +
    geom_bar(stat = "identity", width = 1) +
    coord_polar(theta = "y") +
    labs(fill = "Rider Type") +
    ggtitle("Rides Per Year") +
    theme_void() +
    geom_text(aes(label = scales::comma(values)), 
                  position = position_stack(vjust = 0.5))

收到的报错信息:

ERROR while rich displaying an object: Error in grid.newpage(): 
    could not open file 'Rplot001.png'

Traceback:

    tryCatch(withCallingHandlers({
    . if (!mime %in% names(repr::mime2repr))
    . stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
    . rpr <- repr::mime2repr[mime]
    . if (is.null(rpr))
    . return(NULL)
    . prepare_content(is.raw(rpr), rpr)
    . }, error = error_handler), error = outer_handler)
    tryCatchList(expr, classes, parentenv, handlers)
    tryCatchOne(expr, names, parentenv, handlers[[1L]])
    doTryCatch(return(expr), name, parentenv, handler)
    withCallingHandlers({
    . if (!mime %in% names(repr::mime2repr))
    . stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
    . rpr <- repr::mime2repr[mime]
    . if (is.null(rpr))
    . return(NULL)
    . prepare_content(is.raw(rpr), rpr)
    . }, error = error_handler)
    repr::mime2repr[mime]
    repr_text.default(obj)
    paste(capture.output(print(obj)), collapse = "
")
    capture.output(print(obj))
    evalVis(expr)
    withVisible(eval(expr, pf))
    eval(expr, pf)
    eval(expr, pf)
    print(obj)
    print.ggplot(obj)
    grid.newpage()

解决思路与建议

报错核心是grid.newpage()无法创建临时图片文件,这是Kaggle的R环境中图形渲染的权限或默认配置问题,可尝试以下几种方法:

  • 显式指定图形设备并手动控制输出
    先通过png()创建图片文件,绘图后关闭设备,再加载显示:

    # 创建图片设备
    png("pie_plot.png", width = 800, height = 600)
    
    pie_type_user <- data.frame(rider_type = c("Member", "Casual"), 
                                values = c(2189031, 1537785))
    
    ggplot(pie_type_user, aes(x = "", y = values, fill = rider_type)) +
        geom_bar(stat = "identity", width = 1) +
        coord_polar(theta = "y") +
        labs(fill = "Rider Type") +
        ggtitle("Rides Per Year") +
        theme_void() +
        geom_text(aes(label = scales::comma(values)), 
                      position = position_stack(vjust = 0.5))
    
    # 关闭设备
    dev.off()
    
    # 显示图片
    knitr::include_graphics("pie_plot.png")
    
  • 调整repr包的图形输出配置
    Kaggle的R环境依赖repr包处理图形显示,提前设置图形尺寸参数:

    library(repr)
    # 设置图形宽高
    options(repr.plot.width = 8, repr.plot.height = 6)
    
    pie_type_user <- data.frame(rider_type = c("Member", "Casual"), 
                                values = c(2189031, 1537785))
    
    ggplot(pie_type_user, aes(x = "", y = values, fill = rider_type)) +
        geom_bar(stat = "identity", width = 1) +
        coord_polar(theta = "y") +
        labs(fill = "Rider Type") +
        ggtitle("Rides Per Year") +
        theme_void() +
        geom_text(aes(label = scales::comma(values)), 
                      position = position_stack(vjust = 0.5))
    
  • 使用ggsave保存后加载显示
    先将ggplot对象保存为图片文件,再调用显示:

    pie_type_user <- data.frame(rider_type = c("Member", "Casual"), 
                                values = c(2189031, 1537785))
    
    p <- ggplot(pie_type_user, aes(x = "", y = values, fill = rider_type)) +
        geom_bar(stat = "identity", width = 1) +
        coord_polar(theta = "y") +
        labs(fill = "Rider Type") +
        ggtitle("Rides Per Year") +
        theme_void() +
        geom_text(aes(label = scales::comma(values)), 
                      position = position_stack(vjust = 0.5))
    
    # 保存图片
    ggsave("pie_plot.png", p, width = 8, height = 6)
    
    # 显示图片
    knitr::include_graphics("pie_plot.png")
    

内容的提问来源于stack exchange,提问作者Bill_Stevenson1968

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:27:46