Как заставить ggmap заполнить всю страницу приложения R Shiny? - PullRequest
0 голосов
/ 27 июня 2019

Обратите внимание, что я не могу использовать листовки, поскольку мне нужно добавить пользовательские фигуры на карту, чего я не могу сделать в листовке.

Так что нижеприведенное схоже с тем, что я имею в виду, где у меня есть ggmapс некоторыми добавленными слоями geomPolygon, и затем он становится полным фоном страницы R Shiny с виджетами, расположенными поверх него.

enter image description here

1 Ответ

2 голосов
/ 27 июня 2019

У меня нет ключа API ggmap, но он работает так же.Все вы делаете это с помощью CSS.

. Вы должны установить высоту и ширину тела на 100%, то же самое относится и к графику, поэтому они распространяются на ширину и высоту области просмотра.

Все это должно быть установлено на position: absolute.Это означает, что div будет на 10 пикселей сверху и на 10 пикселей справа.absolutePanel делает эту настройку для вас, но вы можете сделать это в своем собственном CSS.

library(shiny)
library(leaflet)
library(RColorBrewer)
library(ggmap)


ui <- bootstrapPage(
  tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
  plotOutput("map", width = "100%", height = "100%"),
  absolutePanel(top = 10, right = 10,
                sliderInput("range", "Magnitudes", min(quakes$mag), max(quakes$mag),
                            value = range(quakes$mag), step = 0.1
                ),
                selectInput("colors", "Color Scheme",
                            rownames(subset(brewer.pal.info, category %in% c("seq", "div")))
                ),
                checkboxInput("legend", "Show legend", TRUE)
  )
)

server <- function(input, output, session) {

  output$map <- renderPlot({
    df <- data.frame(
      gp = factor(rep(letters[1:3], each = 10)),
      y = rnorm(30)
    )
    ds <- do.call(rbind, lapply(split(df, df$gp), function(d) {
      data.frame(mean = mean(d$y), sd = sd(d$y), gp = d$gp)
    }))


    ggplot(df, aes(gp, y)) +
      geom_point() +
      geom_point(data = ds, aes(y = mean), colour = 'red', size = 3)
  })

}

shinyApp(ui, server)
...