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


投稿日: Rの解析に役に立つ記事

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

RStudioのversion 1.0.136。windows 10のR version 3.3.3で動作を確認しています。


コマンドの紹介

詳細はコマンド、各パッケージのヘルプを確認してください。実行コマンドが短いので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) [/code]


実行例

・Chrome バージョン 56.0.2924.87 (64-bit)での実行例です。


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

スポンサードリンク

スポンサードリンク