本記事は、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などのライブラリ無しで書こうとすると、とても大変です。なるべく便利なライブラリを使って、それでも足りない場合に自分で実装するようにしましょう。