RMarkdown中使用ggsave保存corrplot报错的解决咨询及其他绘图保存方法询问
RMarkdown中使用ggsave保存corrplot报错的解决咨询及其他绘图保存方法询问
嘿,我来帮你看看这个问题~你遇到的Error in x$theme : $ operator is invalid for atomic vectors报错,其实是两个小细节没注意到,咱们一步步来解决:
直接触发报错的核心原因
你在ggsave的参数里写了plot = "sauve",这里犯了个小错误:你把变量名写成了字符串(加了引号),但ggsave需要的是实际的绘图对象变量,而不是字符串形式的变量名。所以首先要把引号去掉,改成plot = sauve。不过这只是第一步,还有个隐藏的兼容问题需要处理:
corrplot与ggsave的兼容问题
ggsave本质是为ggplot系列的绘图设计的,而corrplot包生成的是R基础绘图系统的图形,它返回的并不是标准的ggplot对象,所以哪怕你去掉引号,可能还是会有奇怪的问题。这里给你几个可行的解决办法:
方法1:用R基础绘图设备直接保存
这是最适配corrplot的方法,通过打开/关闭绘图设备来保存图形:
# 打开svg格式的绘图设备,指定保存路径和文件名 svg("corrplotchene.svg") # 绘制相关矩阵图 corrplot(chene_cor) # 关闭设备,完成保存 dev.off()
方法2:用recordPlot()记录图形后适配ggsave
如果你还是想用ggsave,可以先把corrplot生成的图形记录下来,再传给ggsave:
# 绘制图形并赋值 sauve <- corrplot(chene_cor) # 记录当前绘图设备中的图形 recorded_plot <- recordPlot() # 用ggsave保存记录的图形 ggsave(filename = "corrplotchene.svg", plot = recorded_plot)
方法3:改用支持ggplot的相关矩阵绘图工具
如果之后经常要和ggsave配合,可以试试ggcorrplot包,它生成的是标准的ggplot对象,能直接和ggsave兼容:
library(ggcorrplot) # 生成ggplot类型的相关矩阵图 corr_plot <- ggcorrplot(chene_cor) # 直接用ggsave保存 ggsave("corrplotchene.svg", plot = corr_plot)
RMarkdown中保存绘图的便捷小技巧
其实在RMarkdown里,你完全可以不用手动调用保存函数,直接给代码块加参数就能自动保存图形:
```{r, fig.save="corrplotchene.svg", fig.width=8, fig.height=6} chene_cor <- cor(Chene_num) corrplot(chene_cor)
编译RMarkdown的时候,这个代码块的图形就会自动保存成你指定的文件名,还能通过`fig.width`和`fig.height`调整图形大小,特别方便。 备注:内容来源于stack exchange,提问作者Tom Bielakoff
相关产品推荐
相关产品推荐

