Np-Urのデータ分析教室

オーブンソースデータなどWeb上から入手できるデータを用いて、RとPython両方使って分析した結果を書いていきます

shinyWidgets ライブラリを使って変わったUIを作成する

本記事は、Shiny Advent Calendar 2018の11日目の記事です。


そして、Shiny100本ノックの第34弾です。

今回は、shinyWidgets というライブラリを使って、素のShinyアプリケーションとは違うUIを作ってみます。

shinyWidgets の導入

shinyWidgets を使うことでは、チェックボックスやラジオボタンを多彩にすることができます。

早速インストールしてみましょう。CRANからインストールできます。

> install.packages("shinyWidgets")

インストールできたら、デモアプリがすぐ使えるので試してイメージを掴みましょう。

> shinyWidgets::shinyWidgetsGallery()

このような、素のShinyのまま実装しようとするとかなり大変なUIを、簡単に作ることができます。

使い勝手良さそうなウィジェット

shinyWidgets には様々な関数が用意されていますが、今回は使い勝手の良い dropdown関数を紹介します。
f:id:Np-Ur:20181217063848p:plain

簡単なサンプルコードを貼るので、まずコピペして実行してみてください。

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引数を使うと便利です。

f:id:Np-Ur:20181217064816p:plain

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