Shinyでggplot2の選択領域を拡大 (brushOpts)

カテゴリ: r

Shinyでplotly.jsを使わずにインタラクティブな図を作れるのかなと思ったら、

「Shiny 100本ノック」の

【Shiny小技】グラフをダブルクリックすると情報が取得できる、dblclickOptsの紹介

を見つけました。

どうやら、 brushOpts なるものを使えば、 plot (ggplot2 を含む) の拡大ができるようなので試してみました。

  • 選択した領域を拡大
  • 選択した領域を移動
  • 選択した領域外をクリックすることで元のサイズに戻る

といったことができるようです。

dblclickOpts と組み合わせると、 拡大した領域内で点をダブルクリックして点の情報を取り出すことも可能みたいです。

library(shiny)
library(ggplot2)

u <- shinyUI(fluidPage(
  plotOutput(
    "plot",
    brush = brushOpts(id = "brush")
  )
))

s <- shinyServer(function(input, output) {
  output$plot <- renderPlot({
    qplot(Sepal.Length, Sepal.Width, data = iris) +
      coord_cartesian(
        xlim = unlist(input$brush[c("xmin", "xmax")]),
        ylim = unlist(input$brush[c("ymin", "ymax")])
      )
  })
})

runApp(list(server = s, ui = u))