Plotly具有函数event_data,它将响应绘图点的点击。但是,您必须指定一个"来源"用于标识您要观看的地块的event_data。
ggplot中是否也提供此类功能。如果不是,那么我们如何才能找到所点击的情节的ID。
注意:我将wordcloud称为图形,这些图形是动态生成的。
答案 0 :(得分:1)
这是一个检查点击哪个Plot的最小示例。只要发生点击事件,反应值selected_plot
就会更新。
library(shiny)
ui = fluidPage(
verbatimTextOutput("text"),
plotOutput("plot1", click = "plot1_click"),
plotOutput("plot2", click = "plot2_click")
)
server = function(input, output, session){
output$plot1 = renderPlot({
hist(rnorm(1000))
})
output$plot2 = renderPlot({
plot(cumsum(rnorm(1000)))
})
selected_plot = reactiveVal()
observeEvent(input$plot1_click, {selected_plot(1)})
observeEvent(input$plot2_click, {selected_plot(2)})
output$text = renderPrint({
cat("selected plot:", selected_plot())
})
}
shinyApp(ui, server)
请注意,您还可以使用click
的{{1}}参数在服务器端指定outputArgs
选项。
答案 1 :(得分:0)
您可以将ggplot
图表翻译为plotly
- 创建图表后调用ggplotly(<yourplot>)
图表并使用event_data()
函数:
library(plotly)
set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]
p <- ggplot(data = d, aes(x = carat, y = price)) + geom_point()
ggplotly(p)
答案 2 :(得分:0)
没有任何例子很难解释。但是,当您使用Shiny
感谢包ggiraph
时,geom_point
可以将geom_point_interactive
更改为selected_dot <- reactive({
input$plot_selected
})
,之后会使用以下内容:
{ddd($variable)} -> debug and die
{ppp($variable)} -> debug only
希望它有所帮助