Shiny学习实践01

Shiny是什么东东?

官方描述:

Shiny is an R package that makes it easy to build interactive web apps straight from R. You can host standalone apps on a webpage or embed them in R Markdown documents or build dashboards. You can also extend your Shiny apps with CSS themes, htmlwidgets, and JavaScript actions.

简单来说,通过Shiny,你可以把在R里面的所有分析结果通过更友好的界面来展示。除了可以嵌入到RMD文件,还可以做仪表盘,创建App,做成html插件和Java脚本。

01 示例:一个简单的html

install.packages("shiny")
setwd("E:\shiny\testing")

在工作目录下创建两个文件:ui.R,server.R

##ui.R
library(shiny)
shinyUI(fluidPage(
        titlePanel("Data science FTW!"),
        sidebarLayout(
                sidebarPanel(
                        h3("Sidebar Text")
                ),
                mainPanel(
                        h3("Main Panel Text")
                )
        )
))
##server.R
library(shiny)
shinyServer(function(input,output){
        
})

回到RStudio输入“runApp()”,就会弹出一个html页面

更多封装函数可在RStudio里面输入“?builder”来查看shiny的帮助文档。

02 示例:加入可拖动组件和可视化数据

仍然是在两个文件(ui.R, server.R)里面做工作,具体函数在注释中,如下:

##ui.R
library(shiny)
shinyUI(fluidPage(
        titlePanel("HTML Tags"),
        sidebarLayout(
                sidebarPanel(
                        h1("一级标题"),
                        h3("三级标题"),
                        em("斜体文字"),
                        ##定义一个可拖动组件
                        sliderInput("slider1","Slide Me!",0,100,0),
                        ##输入出图的随机数的个数
                        numericInput("numeric","How Many Random Numbers Should be Plotted?",
                                     value = 1000, min = 1, max = 1000, step = 1),
                        ##选择X轴的最小最大值
                        sliderInput("sliderX", "Pick Minimum and Maximum X Values",
                                    -100, 100, value = c(-50, 50)),
                        ##选择y轴的最小最大值
                        sliderInput("sliderY", "Pick Minimum and Maximum Y Values",
                                    -100, 100, value = c(-50, 50)),
                        ##可选的设置选项
                        checkboxInput("show_xlab", "Show/Hide X Axis Label", value = TRUE),
                        checkboxInput("show_ylab", "Show/Hide Y Axis Label", value = TRUE),
                        checkboxInput("show_title", "Show/Hide Title")
                        
                ),
                mainPanel(
                        h3("Main Panel Text"),
                        code("Some Code!"),
                        h3("Slider Value:"),
                        ##用来存放拖动数值,通过server.R来传值
                        textOutput("text"),
                        h3("Graph of Random Points"),
                        plotOutput("plot1")
                )
        )
))
##server.R
library(shiny)
shinyServer(function(input,output){
        ##用renderText来传递可拖动组件的值
        output$text <- renderText(input$slider1)
        ##用renderPlot来传递plot对象
        output$plot1 <- renderPlot({
                set.seed(2016-05-25)
                ##把ui.R中的参数传递过来
                number_of_points <- input$numeric
                minX <- input$sliderX[1]
                maxX <- input$sliderX[2]
                minY <- input$sliderY[1]
                maxY <- input$sliderY[2]
                dataX <- runif(number_of_points, minX, maxX)
                dataY <- runif(number_of_points, minY, maxY)
                ##设置plot的标识
                xlab <- ifelse(input$show_xlab, "X Axis", "")
                ylab <- ifelse(input$show_ylab, "Y Axis", "")
                main <- ifelse(input$show_title, "Title", "")
                ##出图
                plot(dataX, dataY, xlab = xlab, ylab = ylab, main = main,
                     xlim = c(-100, 100), ylim = c(-100, 100))
        })
                
})

再次运行runApp()即可得到结果:

posted @ 2017-12-05 16:15  极客W先森  阅读(436)  评论(0编辑  收藏  举报