啊啊啊啊啊吖

2018-10-26   阅读量: 1078

数据分析师 R语言

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元素指定)。这适用于这样的情况,即图像是动态创建的,但在应用程序发送预呈现的图像时就不合适了。
添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
7.3728 1 1 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子