操纵 renderPlotly 对象的高度属性?
Manipulating height attribute of renderPlotly object?
我想在一个闪亮的仪表板选项卡中包含多个不同高度的图。
许多现有答案都涉及在 ggplotly 中设置高度参数。使用此参数确实会改变图形的呈现方式。但是,它不能解决我的问题。它周围的对象呈现为调整后的图形仍然具有其原始高度。例如,如果第一个图形被加长,第二个图形将出现在它的上方。或者,如果第一个数字被缩短,那么下一个数字之前会有一个大空space。
Alexander Leow 在他对以下问题的隐藏回答中为我的问题提供了一种解决方案:
不幸的是,他的回答似乎被多重情节列表结构复杂化了。
我试图将他的解决方案改编成一个情节,但我没有成功。当应用程序中 运行 时,以下代码会产生错误:
"object type closure is not subsettable"
library(plotly)
library(shiny)
library(shinydashboard)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, uiOutput('plot'))
)
)
)
)
)
server <- function(input, output) {
output$plot <- renderUI({
plot_output_object <- renderPlotly({
p <- ggplot() +
geom_point(aes(x=1,y=2))
ggplotly(p)
})
attr(plot_output_object,'outputArgs') <- list(height="200px")
return(plot_output_object)
})
}
shinyApp(ui = ui, server = server)
以下示例演示了 ggplotly 高度参数如何无法解决我的问题。第一图和第二图差距很大
library(shiny)
library(shinydashboard)
library(plotly)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, plotlyOutput('plot'))
),
fluidRow(
column(12, plotlyOutput('plot2'))
)
)
)
)
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
p <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p, height = 200)
})
output$plot2 <- renderPlotly({
p2 <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p2)
})
}
shinyApp(ui = ui, server = server)
ggplotly
有一个 height
参数。以下应该完成这项工作:
library(shiny)
library(shinydashboard)
library(plotly)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, plotlyOutput('plot', height = "200px"))
),
fluidRow(
column(12, plotlyOutput('plot2'))
)
)
)
)
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
p <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p, height = 200)
})
output$plot2 <- renderPlotly({
p2 <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p2)
})
}
shinyApp(ui = ui, server = server)
我想在一个闪亮的仪表板选项卡中包含多个不同高度的图。
许多现有答案都涉及在 ggplotly 中设置高度参数。使用此参数确实会改变图形的呈现方式。但是,它不能解决我的问题。它周围的对象呈现为调整后的图形仍然具有其原始高度。例如,如果第一个图形被加长,第二个图形将出现在它的上方。或者,如果第一个数字被缩短,那么下一个数字之前会有一个大空space。
Alexander Leow 在他对以下问题的隐藏回答中为我的问题提供了一种解决方案:
不幸的是,他的回答似乎被多重情节列表结构复杂化了。
我试图将他的解决方案改编成一个情节,但我没有成功。当应用程序中 运行 时,以下代码会产生错误: "object type closure is not subsettable"
library(plotly)
library(shiny)
library(shinydashboard)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, uiOutput('plot'))
)
)
)
)
)
server <- function(input, output) {
output$plot <- renderUI({
plot_output_object <- renderPlotly({
p <- ggplot() +
geom_point(aes(x=1,y=2))
ggplotly(p)
})
attr(plot_output_object,'outputArgs') <- list(height="200px")
return(plot_output_object)
})
}
shinyApp(ui = ui, server = server)
以下示例演示了 ggplotly 高度参数如何无法解决我的问题。第一图和第二图差距很大
library(shiny)
library(shinydashboard)
library(plotly)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, plotlyOutput('plot'))
),
fluidRow(
column(12, plotlyOutput('plot2'))
)
)
)
)
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
p <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p, height = 200)
})
output$plot2 <- renderPlotly({
p2 <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p2)
})
}
shinyApp(ui = ui, server = server)
ggplotly
有一个 height
参数。以下应该完成这项工作:
library(shiny)
library(shinydashboard)
library(plotly)
ui <- dashboardPage(dashboardHeader(title = "Test"),
dashboardSidebar(
menuItem("Test", tabName = "test")
),
dashboardBody(
tabItems(
tabItem(tabName = "test",
fluidRow(
column(12, plotlyOutput('plot', height = "200px"))
),
fluidRow(
column(12, plotlyOutput('plot2'))
)
)
)
)
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
p <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p, height = 200)
})
output$plot2 <- renderPlotly({
p2 <- ggplot() + geom_point(aes(x = 1, y = 2))
ggplotly(p2)
})
}
shinyApp(ui = ui, server = server)