【发布时间】:2019-10-04 12:07:43
【问题描述】:
我有下面闪亮的仪表板,最初您可以在其中看到selecctinput()。当用户选择返回分析时,会创建第二个selectInput()。对于前两个选择中的每一个,应显示不同的图。问题是我需要显示的图显示在顶部,而现在 highcharter 图显示在底部。
#ui.r
library(shiny)
library(shinydashboard)
library(plotly)
library(highcharter)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
selectInput("sec","Page",choices=c("Introduction","Return Analysis"),selected = "Introduction"),
uiOutput("tab")
),
dashboardBody(
plotlyOutput("plot"),
highchartOutput("hc2")
)
)
#server.r
server <- function(input, output) {
output$tab<-renderUI({
if(input$sec=="Introduction"){
return(NULL)
}
else if(input$sec=="Return Analysis"){
selectInput("tb", "Tabs",choices=c("Monthly Returns","Monthly Returns(Histogram)","Annual Returns"),selected = "Monthly Returns")
}
})
output$plot <- renderPlotly({
if(input$sec=="introduction"){
return(NULL)
}
else if(input$tb=="Monthly Returns"){
plot_ly(mtcars, x = ~mpg, y = ~wt)
}
else{
return(NULL)
}
})
output$hc2 <- renderHighchart({
if(input$sec=="Introduction"){
return(NULL)
}
else if(input$tb=="Monthly Returns(Histogram)"){
data(diamonds, mpg, package = "ggplot2")
hchart(mpg, "scatter", hcaes(x = displ, y = hwy, group = class))
}
else{
return(NULL)
}
})
}
【问题讨论】:
-
如果你把
highchartOuptut放在plotlyOutput之前,那么高图就会出现在顶部。您在应用中同时使用plotly和highchart是否有特殊原因?如果您使用一个包,您可以通过一个*Output调用来渲染两个不同的图。 -
是的,我需要用 plotly 和 highcharter 来做。这个可以吗?
-
猜猜我会使用相同的包,那将如何工作?
-
如果你有一个输出容器,那么同样的方法,加上一个额外的
if语句应该可以工作。您只是在绘图类型之间切换,所有绘图类型都是由例如renderPlotly创建并发送到相同的plotlyOutput。 -
好的,但让我印象深刻的是,2 个包没有解决方案