闪亮的 Ui - 多次参考同一个情节
Posted
技术标签:
【中文标题】闪亮的 Ui - 多次参考同一个情节【英文标题】:shiny Ui - refer to same plot multiple times 【发布时间】:2021-04-16 16:26:03 【问题描述】:我构建了一个闪亮的应用程序,最终应该可以支持多种语言。
因此,在我的 UI 中,我想多次引用相同的图。
但是,我似乎只能参考 outplut$plot 一次 - 如果我多次这样做,则看不到任何绘图。
所以我的问题是:如何从 UI 中多次引用同一个图?
请在下面找到一个最低限度的工作示例。如果我在 UI 中注释掉“plot2”,它就可以工作。如果我不这样做,两个情节都会消失。
来自柏林的祝福(:
library(shiny)
library(ggplot2)
library(plotly)
y <- c(1:30)
x <- c(1:30)
data <- as.data.frame(cbind(y, x))
plot <- renderPlotly(
ggplotly(
ggplot(data, aes(x=x, y=y)) +
geom_point()
)
)
# Define UI for application that draws a histogram
ui <- fluidPage(
"plot1",
plotlyOutput("plot", width = "100%"),
# "plot2",
# plotlyOutput("plot", width = "100%")
)
# Define server logic required to draw a histogram
server <- function(input, output)
output$plot <- renderPlotly(
ggplotly(
ggplot(data, aes(x=x, y=y)) +
geom_point()
)
)
# Run the application
shinyApp(ui = ui, server = server)
【问题讨论】:
【参考方案1】:我相信您不能两次使用相同的输出,因为这些图在 html 中将具有相同的 ID
。此外,还不清楚为什么您需要针对您的特定问题这样做,您是否需要显示相同的图两次?
否则,您可以尝试将“语言相关”逻辑添加到服务器端,也许?例如
output$plot <- renderPlotly(
if (current_language() == 'English')
...
else
...
)
作为一种解决方法,您可以尝试将绘图保存到一个对象,例如
plot <- ggplotly(
ggplot(data, aes(x=x, y=y)) +
geom_point()
)
然后用它来创建两个输出(虽然名称不同)
【讨论】:
bonsoir claude & merci pour ton avis (: @why?我基本上复制了应用程序四次,并为四种语言中的每一种创建了面板。你知道最聪明的方法吗?你的头?@replication 这就是我的想法,感谢您的确认 哦,我以为用户选择了整个应用程序的语言,但似乎你一次显示了所有元素。我的意思是,你可以在一个循环中创建所有元素或其他东西......但如果应用程序不是很大,我会像你一样复制所需的输出。 不,我只是使用了 navbarPage 和四个不同的 navbarMenus .. 偶然发现了 shiny.i18n,然后考虑实现它..以上是关于闪亮的 Ui - 多次参考同一个情节的主要内容,如果未能解决你的问题,请参考以下文章