SHINYについて 黄研究室4年 小林賢哉
SHINYとは 2012年11月に初登場 インタラクティブなWebアプリケーションを Rで手軽に作れるRのライブラリ
サンプル http://shiny.rstudio.com/gallery/kmeans-example.html 他にも色々見たい場合
作ってみよう!!! Rstudioを起動 「New Project」→「New Directory」 →「Shiny Web Application」 名前は適当で、「Create Project」 既にコードは書かれてるので起動してみよう!!!
解説:ファイル Server.R →パソコンで処理する部分。 出力に関することはこちらに Ui.R →パソコンで処理する部分。 出力に関することはこちらに Ui.R →インターフェースのレイアウトを調整する。 ファイル名はこのままでないと動かない この2つがあって初めて動く
解説:レイアウト Ui.R → shinyUI(fluidPage( ← レイアウトの設定 他にも色々あるよ!!! http://shiny.rstudio.com/articles/layout-guide.html
解説:レイアウト titlePanel mainPanel sidebarPanel
解説:ソースコード(ui.R) ()の中で、次に行く時は、「,」を忘れない titlePanel sidebarPanel shinyUI(fluidPage( ページの設定 titlePanel("Old Faithful Geyser Data"), sidebarLayout( sidebarPanel( sliderInput(“bins”, 引数 “Number of bins:”, ラベル min = 1, 最小の値 max = 50, 最大値 value = 30) 最初の値 ), mainPanel( plotOutput("distPlot") ) )) ()の中で、次に行く時は、「,」を忘れない titlePanel sidebarPanel スライドバーのインプットについて mainPanel 出力について書いている
解説:ソースコード(server.R) shinyServer(function(input, output) { Render*→リアルタイムな出力に対して ウィジェットの値が変わった 時、実行される。 Output$*→ui.Rで書いたものに対応 Input$*→ウィジェットの値に対応 R言語を普通に書き込める!!! shinyServer(function(input, output) { output$distPlot <- renderPlot({ x <- faithful[, 2] bins <- seq(min(x), max(x), length.out = input$bins + 1) hist(x, breaks = bins, col = 'darkgray', border = 'white') }) 出力について: ヒストグラムについて 書いている
つまりぃ・・・ Ui.R server.R shinyServer(function(input, output) { shinyUI(fluidPage( titlePanel("Old Faithful Geyser Data"), sidebarLayout( sidebarPanel( sliderInput("bins", “Number of bins:”, min = 1, max = 50, value = 30) ), mainPanel( plotOutput("distPlot") ) )) shinyServer(function(input, output) { output$distPlot <- renderPlot({ x <- faithful[, 2] bins <- seq(min(x), max(x), length.out = input$bins + 1) hist(x, breaks = bins, col = 'darkgray', border = 'white') })
もっと色々正確に知りたい!! インターフェースについて http://qiita.com/hoxo_m/items/8a138429d8d995440020 ウィジェットについて http://qiita.com/hoxo_m/items/8e84eb67c44afebe4d24 出力について http://qiita.com/hoxo_m/items/50c6541ad5a475a6736b
問題 このようなアプリケーションをつくれ 「倍の数字」・「気分」は、ウィジェットによって、 リアルタイムに変更される。
ヒント 分からないことがあったら聞いてください。 答えられる範囲で答えます。 とはいいません!!! スライドに書かれてない事は添付したURLの内容を参考に!!! 分からないことがあったら聞いてください。 答えられる範囲で答えます。
終わった人は・・・・応用!!! 今までのプロジェクトで行った分析をWebアプリケーションにしてみよう!!!
Server.R # This is the server logic for a Shiny web application. # You can find out more about building applications with Shiny here: # # http://shiny.rstudio.com library(shiny) shinyServer(function(input, output) { output$text <- renderText({ paste("今の自分の気分はいつもより", input$bins ,"倍" , input$radio) })
# This is the user-interface definition of a Shiny web application. # You can find out more about building applications with Shiny here: # # http://shiny.rstudio.com library(shiny) shinyUI(fluidPage( # Application title titlePanel("11月6日黄プロジェクト問題"), # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( sliderInput("bins", "何倍?", min = 100, max = 1000, value = 500), radioButtons("radio", label = h3("気分は?"), choices = list("最高" = "最高", "早く帰りたい" = "早く帰りたい", "もう授業終われ" = "もう授業終われ"),selected = "最高") ), ui.R
# Show a plot of the generated distribution mainPanel( textOutput("text") ) )) ui.R