R 使用热图()作为ggsave()的绘图输入时出错
我想在ggplot2::ggsave()中保存stats::heatmap()的输出,但输出不是绘图,我收到一个错误。 代码如下:R 使用热图()作为ggsave()的绘图输入时出错,r,ggplot2,heatmap,R,Ggplot2,Heatmap,我想在ggplot2::ggsave()中保存stats::heatmap()的输出,但输出不是绘图,我收到一个错误。 代码如下: data("iris") col<- colorRampPalette(c("blue", "white", "red"))(20) ggsave(filename = "heatmap.png", plot = heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE),device = "png", dpi
data("iris")
col<- colorRampPalette(c("blue", "white", "red"))(20)
ggsave(filename = "heatmap.png", plot = heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE),device = "png", dpi = 450)
数据(“iris”)
colggsave()的语法是
ggsave(filename, plot = last_plot(), device = NULL, path = NULL,
scale = 1, width = NA, height = NA, units = c("in", "cm", "mm"),
dpi = 300, limitsize = TRUE, ...)
要存储的绘图必须作为第二个参数传递。为此,必须能够将绘图指定给变量。这可以通过ggplot()
创建的绘图来完成:
而p2
现在是一个列表,而不是一个绘图:
p2
## $rowInd
## [1] 2 1 3 4
##
## $colInd
## [1] 2 1 3 4
##
## $Rowv
## NULL
##
## $Colv
## NULL
因此,将p2
传递到ggsave()
将不起作用,因为它实际上不包含绘图
但仍然可以使用图形设备将底图存储在文件中
例如,您可以创建一个png
-文件,如下所示:
png(filename = "heatmap.png")
heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE)
dev.off()
还有其他类似的设备,例如,jpeg()
,pdf()
,和tiff()
您可以在downloadHandler()
中使用该设备,如下所示:
output$downloadData <- downloadHandler(
filename = "heatmap.png",
content = function(file) {
png(filename = file)
col<- colorRampPalette(c("blue", "white", "red"))(20)
heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE)
dev.off()
}
)
output$downloadData只需完成@Stibu的全面回答,就可以让png()与shinny::downloaddhandler()一起工作:
output$download\u我非常感谢您的解释性和全面的回答,但正如我所说的,我想在一个闪亮的applet中使用它,使用downloadHandler()
。png()
似乎无法使用它。其余的都是完全正确的,它肯定会帮助其他不知道ggsave()
参数等的人。我可以在downloadHandler()中使用png()
,不会有问题。到底是什么不起作用?所以我不得不说,我不能让downloadHandler()起作用。你能给我提供png()和downloadHandler()的工作代码吗?好的,现在可以了!我发现我在png()中使用downloadHandler()的file参数的方式是错误的。谢谢斯蒂布!我添加了代码作为另一个答案,但是如果您编辑您的答案并将downloadhandler()代码附加到其中,我会删除我的答案。
png(filename = "heatmap.png")
heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE)
dev.off()
output$downloadData <- downloadHandler(
filename = "heatmap.png",
content = function(file) {
png(filename = file)
col<- colorRampPalette(c("blue", "white", "red"))(20)
heatmap(x = cor(iris[,-5]) , col = col, symm = TRUE)
dev.off()
}
)
output$download_correlation <- downloadHandler(
filename = "correlation_plot.png",
content = function(file) {
#preparing the dataset from an external function
corr_data <- correlation_data()
#colors of the heatmap
col<- colorRampPalette(c("blue", "white", "red"))(20)
png(file)
heatmap(x = cor(x =as.matrix(corr_data)) , col = col, symm = TRUE)
dev.off()
)