本記事は、Shiny Advent Calendar 2018の11日目の記事です。
そして、Shiny100本ノックの第34弾です。
今回は、shinyWidgets というライブラリを使って、素のShinyアプリケーションとは違うUIを作ってみます。
shinyWidgets の導入
shinyWidgets を使うことでは、チェックボックスやラジオボタンを多彩にすることができます。早速インストールしてみましょう。CRANからインストールできます。
> install.packages("shinyWidgets")
インストールできたら、デモアプリがすぐ使えるので試してイメージを掴みましょう。
> shinyWidgets::shinyWidgetsGallery()
このような、素のShinyのまま実装しようとするとかなり大変なUIを、簡単に作ることができます。
使い勝手良さそうなウィジェット
shinyWidgets には様々な関数が用意されていますが、今回は使い勝手の良い dropdown関数を紹介します。簡単なサンプルコードを貼るので、まずコピペして実行してみてください。
ui.R
library(shiny) library("shinyWidgets") shinyUI(fluidPage( titlePanel("Dropdown Button"), dropdown( sliderInput(inputId = 'bins', "Number of bins:", min = 1, max = 50, value = 30) ), plotOutput("distPlot") ))
server.R
library(shiny) library("shinyWidgets") 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') }) })
オプション引数
dropdown() を使うだけで、簡単に、ドロップダウンUIを作ることができます。なお、引数に tooltip を追加すると、ツールチップを表示することもでき、色を変えたい場合はstatus引数を使うと便利です。
library(shiny) library("shinyWidgets") shinyUI(fluidPage( titlePanel("Dropdown Button"), dropdown( sliderInput(inputId = 'bins', "Number of bins:", min = 1, max = 50, value = 30), status = "success", tooltip = tooltipOptions(title = "Click!") ), plotOutput("distPlot") ))
最後に
このようなUIをshinyWidgetsなどのライブラリ無しで書こうとすると、とても大変です。なるべく便利なライブラリを使って、それでも足りない場合に自分で実装するようにしましょう。