我刚刚开始实习,我的第一个任务是通过将所有现有的ggplot图更新为Plotly图来改进Shiny应用程序。我对R和Shiny很陌生,所以我有几个问题要开始。
目前,本应用程序中的一个图表生成如下:
output$barBoxPlot <- renderUI({
plotOutput("Barplot", width = 700, height = 300
, click = "plot_click"
, hover = "plot_hover"
, brush = "plot_brush")
})
哪里&#34; Barplot&#34;是一个outputId,对应于在代码的另一部分中生成的ggplot图。
我尝试使用ggplotly()函数绘制此图(&#34; Barplot&#34;)作为Plotly图,使用如下内容:
output$barBoxPlot <- renderPlotly({
ggplotly(<insert graph here>)
})
然而,我无法弄清楚如何传入&#34; Barplot&#34;参数(是一个outputId)到ggplotly()中。 ggplotly接受ggplot图的实例,而不是outputId。
有没有办法将outputId传入ggplotly()?
谢谢!
答案 0 :(得分:0)
是否会将此置于评论中但由于声誉而无法做到:
尝试将outputID
传递给ggplotly()
时,有多种方法可以解决这个问题。
reactive
中的output$Barplot <- renderPlot(this_reactive_here())
,直接使用ggplotly()
(如果您不需要原始output$barBoxPlot
ggplot
对象的函数或被动对象return(ggplotly(x))
,然后将其放入renderPlotly()
编辑以澄清2:
Barplot
中的plotOutput
应该有一个类似于此的服务器条目:
output$Barplot <- renderPlot({
ggplot(data, aes(...)) # etc
})
将代码放入内部并将其置于反应中,如下所示:
barplot_ggplot <- reactive({
ggplot(data, aes(...)) # etc
})
然后,您可以在output$Barplot
中使用barplot_ggplot()
,将renderPlotly()
中的ggplotly(barplot_ggplot())
用作const getValue = input => input.target.value
const my_filter = stream => stream.filter(text => text.length > 3)
const filteredInputValue = ($input) => {
my_filter($input.asEventStream('input').map(getValue))
const stream1 = filteredInputValue($('#input1')).log()
const stream2 = filteredInputValue($('#input2')).log()
。
我希望有点清楚。