Rで解析:Shinyで習作4「プロットからデータをインタラクティブに取得」

Rの解析に役に立つ記事
スポンサーリンク

Shinyの習作、その4です。出力したプロットからインタラクティブにデータを取得する例です。

RStudioのversion 2022.12.0 Build 353。R version 4.2.2で動作を確認しています。

スポンサーリンク

コマンドの紹介

詳細はコマンド、各パッケージのヘルプを確認してください。実行コマンドが短いのでui.Rとserver.Rに分けずに紹介します。コンソールにペーストして実行すると動作します。

#パッケージの読み込み
if (!require("shiny")) {
  install.packages("shiny")}
if (!require("ggplot2")) {
  install.packages("ggplot2")}

###データ例の作成#####
n <- 50
TestData <- data.frame("Group" = sample(paste0("Group", 1:5), n, replace = TRUE),
                       "Data1" = sample(1:10, n, replace = TRUE),
                       "Data2" = sample(1:10, n, replace = TRUE))
########

#GUI設定
ui <- fluidPage(
  
  fluidRow(
    #fluidRow内に記述すると横並び
    column(width = 4,
           #ggplotをプロット
           plotOutput("ggplot", height = 300,
                      #plotをインタラクティブに選択する:brushOptsオプション
                      #選択エリアの塗色を指定:fillオプション
                      brush = brushOpts(
                        id = "plot_brush", fill = "yellow"
                      )
           )),
    column(width = 4,
           #barplotをプロット
           plotOutput("barplot", height = 300)
    )
  ),
  fluidRow(
    column(width = 4,
           p("選択範囲に含まれる情報"),
           #処理結果を整形して出力:verbatimTextOutputコマンド
           verbatimTextOutput("brushData")
    )
  )
)

#処理内容設定
server <- function(input, output) {
  #ggplot2処理
  output$ggplot <- renderPlot({
    ggplot(TestData, aes(Data2, Data1)) +
      geom_point(aes(col = topo.colors(nrow(TestData)))) +
      guides(colour = FALSE)
  })
  #barplot処理
  output$barplot <- renderPlot({
    if(length(GetData()[, 1]) >= 1){
      barplot(xtabs(~as.character(GetData()[, 1])), col = topo.colors(5))
    }else{}
  })
  #選択範囲のデータ出力
  output$brushData <- renderPrint({
    brushedPoints(GetData(), input$plot_brush)
  })
  #選択範囲のデータを取得
  GetData <- reactive({
    brushedPoints(TestData, input$plot_brush)
  })
}

#shinyアプリ起動
shinyApp(ui, server)

実行例

・Chromeでの実行例です。


少しでも、あなたの解析が楽になりますように!!

Amazon audibleの登録の紹介

プライム会員限定で2024年7月22日まで3か月無料体験キャンペーン開催中です。無料体験後は月額1,500円で聞き放題です。なお、聞き放題対象外の本はAudible会員であれば非会員価格の30%引きで購入することが可能です。

Amazon audibleはプロのナレーターが朗読した本をアプリで聞くことができるサービスで、オフライン再生も可能です。通勤や作業のお供にAmazon audibleのご登録はいかがでしょうか。

・AmazonのAudible

https://amzn.to/3L4FI5o

タイトルとURLをコピーしました