R语言VennDiagram绘图异常:仅输出[1]无图形显示求助
问题原因及解决办法
这个问题和代码解析无关,核心是VennDiagram包的venn.diagram()函数的行为逻辑:
- 当你指定了
filename参数时,函数会直接把韦恩图保存为你指定的文件(比如你代码里的venn_diagram.png),不会在RStudio的右侧绘图面板中显示图形。 - 控制台输出的
[1]其实是函数返回的布尔值TRUE,表示文件已经成功保存到你的当前工作目录中,你可以去那里找到生成的图片文件。
如果想要在绘图面板中显示韦恩图,或者同时实现显示+保存,可以用以下两种方式调整代码:
方式一:仅在面板显示韦恩图
删掉filename和imagetype参数,让函数返回图形对象,再用grid包的grid.draw()渲染:
library(VennDiagram) library(grid) activity_ids <- unique(daily_activity$id, incomparables = FALSE) sleep_ids <- unique(sleep_day$id, incomparables = FALSE) steps_ids <- unique(hourly_activity$id, incomparables = FALSE) heartrate_ids <- unique(heart_rate$id, incomparables = FALSE) # 生成韦恩图对象 venn_plot <- venn.diagram( x = list(activity_ids, sleep_ids, steps_ids, heartrate_ids), category.names = c("Activity", "Sleep", "Steps", "Heartrate"), output = TRUE, lwd = 2, fill = c("orange", "red", "green", "blue"), cex = 2, fontface = "bold", fontfamily = "sans", cat.col = c("orange", "red", "green", "blue"), cat.cex = 2, cat.default.pos = "outer" ) # 在面板显示图形 grid.draw(venn_plot)
方式二:同时在面板显示+保存到文件
先按方式一生成并显示图形,再用设备函数保存:
library(VennDiagram) library(grid) activity_ids <- unique(daily_activity$id, incomparables = FALSE) sleep_ids <- unique(sleep_day$id, incomparables = FALSE) steps_ids <- unique(hourly_activity$id, incomparables = FALSE) heartrate_ids <- unique(heart_rate$id, incomparables = FALSE) venn_plot <- venn.diagram( x = list(activity_ids, sleep_ids, steps_ids, heartrate_ids), category.names = c("Activity", "Sleep", "Steps", "Heartrate"), output = TRUE, lwd = 2, fill = c("orange", "red", "green", "blue"), cex = 2, fontface = "bold", fontfamily = "sans", cat.col = c("orange", "red", "green", "blue"), cat.cex = 2, cat.default.pos = "outer" ) # 显示图形 grid.draw(venn_plot) # 保存图形到文件 dev.copy(png, "venn_diagram.png", width = 800, height = 800) dev.off()
内容的提问来源于stack exchange,提问作者M.Smit
相关产品推荐
相关产品推荐

