如何让 ggmap 填满 R Shiny 应用程序的整个页面?
How to make a ggmap fill the entire page of a R Shiny app?
请注意我不能使用 leaflet,因为我需要向地图添加自定义形状,而这在 leaflet 中是做不到的。
所以下面的内容与我的想法相似,我有一个 ggmap 添加了一些额外的 geomPolygon 层,然后它变成了 R Shiny 页面的整个背景,小部件位于它上面.
我没有 ggmap API 密钥,但它的工作方式相同。你们都用 CSS
.
您必须将 body 的高度和宽度设置为 100%,这同样适用于绘图,因此它们会扩展到视口的宽度和高度。
上面的所有内容都必须设置为 position: absolute
。这意味着 div 距离顶部 10px,距离右侧 10px。 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)
请注意我不能使用 leaflet,因为我需要向地图添加自定义形状,而这在 leaflet 中是做不到的。
所以下面的内容与我的想法相似,我有一个 ggmap 添加了一些额外的 geomPolygon 层,然后它变成了 R Shiny 页面的整个背景,小部件位于它上面.
我没有 ggmap API 密钥,但它的工作方式相同。你们都用 CSS
.
您必须将 body 的高度和宽度设置为 100%,这同样适用于绘图,因此它们会扩展到视口的宽度和高度。
上面的所有内容都必须设置为 position: absolute
。这意味着 div 距离顶部 10px,距离右侧 10px。 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)