首页 > 解决方案 > 基于带有另一个数据框的绘图图表的点击事件的子数据框

问题描述

我有shiny下面的应用程序,我想在其中单击图表的一个栏,然后根据第一个数据框的列相应地对下表进行子集化Abcd。在单击之前,表格将不被子集显示。我的意图不是使用该crosstalk包,而是使用 javascript 或其他可能的方式,如plotly_clickevent。

Abcd<-c("A","A","B","B")
Prod<-c(34,56,56,89)
Div<-c("Ent","Ent","App","High")
dcross1<-data.frame(Abcd,Prod,Div)

Countd<-c(45,67,78,56)
dcross2<-data.frame(Div,Abcd,Countd)

library(shiny)
library(plotly)
library(ggplot2)
library(dplyr)
library(DT)

ui <- fluidPage(
  plotlyOutput("daily_store_oos_gg"),
  DTOutput("daily_item_oos_rctble")
)

server <- function(input, output) {
  output$daily_store_oos_gg<-renderPlotly({
     # You need function otherwise data.frame NN is not visible
    ggplot(dcross1,
           aes(x=Abcd,
               y=Prod,
               fill=as.factor(Abcd)
           )) +
    geom_bar(stat="identity", position="dodge") 
  
  # Convert to plotly object
  
    ggplotly(daily_store_oos_gg,source="subset")
    })
  output$daily_item_oos_rctble<-renderDT({
    s <- event_data("plotly_click",source = "subset")
    return(DT::datatable(dcross2[dcross2$Abcd==s$x,])) 
  })
  
}

shinyApp(ui, server)

标签: javascriptrshinyplotlydt

解决方案


推荐阅读