0
我想在我的闪亮的应用创建一个rBokeh情节作为输出与在UI rbokehOutput('plot')
和rBokeh动态地块面积
output$plot <- renderRbokeh({
figure() %>%
ly_hexbin(x,y)
})
在服务器中的一部分。我希望剧情的大小是动态的,因为它应该动态调整大小以填充整个剧情窗口。我一直在玩弄height
和width
的论点,无论是在ui和服务器部分,但都无法使其工作;我也尝试在服务器部分使用sizing_mode = "stretch_both"
。当我在没有Shiny的RStudio中显示绘图时,绘图不会填充整个绘图窗口,它会保持其正方形和高宽比。我希望它表现得像一个正常的R图,即当我放大绘图窗口时,绘图会自动调整大小以填充整个窗口。我发现this link,但它只涉及Python的实现。理想情况下,我希望将Shiny中的高度固定为500px,并根据浏览器的大小动态改变宽度。
最小工作示例:
library(shiny)
library(rbokeh)
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
sliderInput('numpoint', 'Number of points to plot', min = 10, max = 1000, value = 200)
),
mainPanel(
rbokehOutput('plot', width = "98%", height = "500px")
)
)
)
server <- function(input, output) {
output$plot <- renderRbokeh({
x <- seq(1, 100, length = input$numpoint)
y <- rnorm(input$numpoint, sd = 5)
figure() %>%
ly_hexbin(x,y)
})
}
shinyApp(ui, server)
更新MWE:
library(shiny)
library(rbokeh)
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
sliderInput('numpoint', 'Number of points to plot', min = 10, max = 1000, value = 200)
),
mainPanel(
fluidRow(
column(12,
rbokehOutput('plot', height = "800px")
)
),
fluidRow(
column(12,
plotOutput('plot1', height = "800px")
)
)
)
)
)
server <- function(input, output) {
output$plot <- renderRbokeh({
x <- seq(1, 100, length = input$numpoint)
y <- rnorm(input$numpoint, sd = 5)
figure(width = 1800, height = 800) %>%
ly_hexbin(x,y)
})
output$plot1 <- renderPlot({
x <- seq(1, 100, length = input$numpoint)
y <- rnorm(input$numpoint, sd = 5)
plot(x,y)
})
}
shinyApp(ui, server)
不是。查看我更新的MWE,并比较缩小窗口宽度(但可能保持高度)时两个图的大小。基本图形保持在800px高度,但rBokeh图形不是。而且,当你在调用'figure()'的时候指定'width = 800'时,图中的hexbins被拉伸(不像基本图形的动态调整大小的点)。 – Skumin