Пример кода:
ui <- fluidPage(
titlePanel("test"),
sidebarLayout(
sidebarPanel(
sliderInput(inputId = "n",
label = "n:",
min = 100,
max = 10000,
value = 3000)
),
mainPanel(
fluidRow(
column(12,plotOutput(outputId="hist", width="600px",height="300px"))
),
hr(),
fluidRow(
column(6,plotOutput(outputId = "plot1", width="300px", height = "300px")),
column(6,plotOutput(outputId = "plot2", width="300px", height = "300px"))
)
)
)
)
server <- function(input, output) {
x <- reactive({
rnorm(input$n)
})
xsq <- reactive({
x()^2
})
df <- reactive({
data.frame(x = x(), xsq = xsq())
})
output$hist <- renderPlot({
ggplot(df()) +
geom_histogram(aes(x = x, y=..density..), bins = 50)
})
output$plot1 <- renderPlot({
ggplot(df()) +
geom_point(aes(x = 1:length(df()$x), y = x))
})
output$plot2 <- renderPlot({
ggplot(df()) +
geom_point(aes(x = 1:length(df()$x), y = xsq))
})
}
shinyApp(ui=ui, server=server)
Выполнение этого приводит к после , который является желаемым выводом (т. Е. Два нижних графика шириной 300 пикселей примерно совпадают с верхним графиком ширины 600).).Однако, если я, например, перехожу на полный экран, открываю приложение в браузере или вообще меняю ширину окна, это происходит.Я попытался установить столбец (align = "left"), но это ничего не меняет (в то время как = "center" перемещает 2-й график немного вправо), поэтому я предполагаю, что это уже значение по умолчанию.Конечно, я могу вручную переместить второй график, установив ширину первого графика менее 6 (наполовину), но для этого необходимо вручную адаптировать график для любого размера экрана / разрешения / окна, который просматривает приложение.Наверняка есть еще один способ автоматически установить, чтобы вторая фигура начиналась именно там, где заканчивается первая фигура, которую я не понял?
Любая помощь приветствуется!