前言:
Shiny是一款R軟件包,能夠構建交互式Web應用,功能十分強大。官網地址:https://shiny.rstudio.com/
Shiny官網主頁
1.shiny包的安裝
install.packages("shiny")
2.運行示例
shiny中內置了很多使用示例,可以直接運行:
library(shiny)#導入shiny包
runExample("01_hello")#運行內置示例"01_hello"
運行結果:彈出交互式窗口
3.Shiny apps的構成
Shiny apps包含一個R script即app.R,位于某個目錄下如(newdir/),app可以通過函數runApp("newdir/app.R")運行。
app.R 包括三部分:
1.a user interface object
2.a server function
3.a call to the shinyApp function
即:1.用戶界面(ui)object 控制應用程序的布局和外觀。2.server function包含構建應用程序所需的說明。3.最后,shinyApp function通過ui和server創建Shiny應用程序對象。
4.自己構建交互程序
只要準備好app.R的三個部分,就是一個完整的交互式應用程序了,可以看下邊的舉例:
1)首先需要安裝maps,mapproj包
install.packages(c("maps", "mapproj"))
2)數據下載
首先下載美國地圖數據counties.rds,
然后下載幫助統計數據的腳本helpers.R
其次,將文件布置在文件夾中,命名為census-app
,在其中創建data
文件夾,將counties.rds文件放在里面,然后helpers.R放在census-app
目錄下,如圖:
census-app
3)創建app.R
將以下代碼復制并粘貼到您的
census-app
目錄下,新建一個app.R文件
# Load packages ----
library(shiny)
library(maps)
library(mapproj)
# Load data ----
counties <- readRDS("data/counties.rds")
# Source helper functions -----
source("helpers.R")
# User interface ----
ui <- fluidPage(
titlePanel("censusVis"),
sidebarLayout(
sidebarPanel(
helpText("Create demographic maps with
information from the 2010 US Census."),
selectInput("var",
label = "Choose a variable to display",
choices = c("Percent White", "Percent Black",
"Percent Hispanic", "Percent Asian"),
selected = "Percent White"),
sliderInput("range",
label = "Range of interest:",
min = 0, max = 100, value = c(0, 100))
),
mainPanel(plotOutput("map"))
)
)
# Server logic ----
server <- function(input, output) {
output$map <- renderPlot({
data <- switch(input$var,
"Percent White" = counties$white,
"Percent Black" = counties$black,
"Percent Hispanic" = counties$hispanic,
"Percent Asian" = counties$asian)
color <- switch(input$var,
"Percent White" = "darkgreen",
"Percent Black" = "black",
"Percent Hispanic" = "darkorange",
"Percent Asian" = "darkviolet")
legend <- switch(input$var,
"Percent White" = "% White",
"Percent Black" = "% Black",
"Percent Hispanic" = "% Hispanic",
"Percent Asian" = "% Asian")
percent_map(data, color, legend, input$range[1], input$range[2])
})
}
# Run app ----
shinyApp(ui, server)
保存app.R文件并運行runApp("census-app")
library(shiny)
runApp("census-app")
運行結果:
census-app運行結果