2018-10-26
阅读量:
1245
R实现shiny高级技巧--发送图片
发送图片
当您想让R生成一个绘图并将其发送到客户机浏览器时,renderPlot()函数在大多数情况下会完成这项工作。但是,当您需要更好地控制流程时,您可能需要使用renderImage()函数。
关于renderPlot()
renderPlot()在R使用其正常的图形设备系统生成图像的任何时候都很有用。换句话说,任何通常介于png()和dev.off()之间的绘图生成代码都可以在renderPlot()中使用。如果以下代码在控制台工作,那么它应该在renderPlot()中工作:
png()
# Your plotting code here
dev.off()
# This would go in shinyServer()
output$myPlot
<-
renderPlot({
# Your plotting code here
})
###可以使用renderImage()发送图像文件。传递给renderImage()的表达式必须返回一个包含名为src的元素的列表,src是文件的路径。下面是一个非常简单的应用程序示例,该应用程序的输出生成一个绘图并通过renderImage()发送:
shinyServer(function(input, output, session) {
output$myImage <- renderImage({
# A temp file to save the output.
# This file will be removed later by renderImage
outfile <- tempfile(fileext='.png')
# Generate the PNG
png(outfile, width=400, height=300)
hist(rnorm(input$obs), main="Generated in renderImage()")
dev.off()
# Return a list containing the filename
list(src = outfile,
contentType = 'image/png',
width = 400,
height = 300,
alt = "This is alternate text")
}, deleteFile = TRUE)
})
shinyUI(pageWithSidebar(
headerPanel("renderImage example"),
sidebarPanel(
sliderInput("obs", "Number of observations:",
min = 0, max = 1000, value = 500)
),
mainPanel(
# Use imageOutput to place the image on the page
imageOutput("myImage")
)
))####
每次重新执行这个输出对象时,它都会创建一个新的PNG文件,将一个绘图保存到其中,然后返回一个包含文件名和其他一些值的列表。
因为deleteFile参数为TRUE,所以当src元素发送数据后,shine将删除文件(由src元素指定)。这适用于这样的情况,即图像是动态创建的,但在应用程序发送预呈现的图像时就不合适了。
7.3728
1
1
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论