我的数据框如下:
col1<-sample(500, size = 500, replace = TRUE)
col2<-sample(500, size = 500, replace = TRUE)
d<-data.frame(col1,col2)
然后我创建此数据框的直方图,该数据框已激活点击事件。当用户单击条时,具有相对值的数据框的行将显示在数据表中。问题在于该应用程序可以在几个值下正常工作。例如,如果我的数据框有5行而不是500行:
col1<-sample(5, size = 5, replace = TRUE)
col2<-sample(5, size = 5, replace = TRUE)
d<-data.frame(col1,col2)
但是使用更多的值时,该应用程序将无法运行,因为该图会在每个单独的条形图中给出一定范围的值,而不是唯一的值。
library(plotly)
library(shiny)
library(DT)
ui <- fluidPage(
mainPanel(
plotlyOutput("heat")
),
DT::dataTableOutput('tbl4')
)
server <- function(input, output, session) {
output$heat <- renderPlotly({
render_value(d) # You need function otherwise data.frame NN is not visible
p <- plot_ly(x = d$col2, type = "histogram",source="subset") # set source so
# that you can get values from source using click_event
})
render_value=function(NN){
output$tbl4 <- renderDataTable({
s <- event_data("plotly_click",source = "subset")
print(s)
return(DT::datatable(d[d$col2==s$y,]))
})
}
}
shinyApp(ui, server)
答案 0 :(得分:1)
您可以尝试执行此操作(添加代码以捕获计数)。您需要绘制计数的直方图,然后才能基于click事件获取原始数据。
async getRestautants() {
return new Promise<boolean>((resolve, reject) => {
console.log('Calling Google Place API to get nearby restaurants...');
const googleMapsAPIEndpoint = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=restaurants&location='
+ this.common.getLatitudeFromSessionStore() + ',' + this.common.getLongitudeFromSessionStore()
+ '&radius=1000&key=' + this.common.googleMapsAPIKey;
console.log(googleMapsAPIEndpoint);
this.http.jsonp(googleMapsAPIEndpoint, 'callback').subscribe(data => {
console.log(data);
});
});
}