我正在尝试创建一个由变量大小调整的小册子地图.是否可以使用不同大小的圆圈创建表示不同变量值的图例?我发现另一篇文章展示了如何在图例中将方块转换为圆圈,但我不确定如何更改图例中不同圆圈的大小.
例如,这是一个虚拟脚本,它创建了与2个变量类(5和10)相关的10个点.我想要一个带有两个圆圈的图例,其大小与使用半径为5和10的addCircleMarkers指定的相同.如果有人可以修改以创建我想要的东西,我将非常感激!谢谢!
library(shiny)
library(leaflet)
#create data
Points<-data.frame(x=runif(10,20,21), y=runif(10,0,1), var=rep(c(5,10),5))
map = leaflet() %>% addTiles()
# Set up shiny app
shinyApp(ui=bootstrapPage(
tags$style(type = "text/css", "html, body {width:100%;height:100%}",
".leaflet .legend i{
border-radius: 50%;
width: 10px;
height: 10px;
margin-top: 4px;
}
"
),
leafletOutput("myMap", width = "100%", height = "100%")),
server= function(input, output){
output$myMap = renderLeaflet({map %>%
addCircleMarkers(Points$x,Points$y,radius=Points$var) %>%
addLegend(colors=rep("blue",2), labels=c(5,10))
})
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试将easyPrint插件整合到我的闪亮小册子应用程序中.我想要的是看起来像演示的东西,但有光泽.
我试图模仿这些例子,但都没有成功.
到目前为止,这是我的R代码的代码:
library(shiny)
library(shinydashboard)
library(shinyjs)
library(htmlwidgets)
library(htmltools)
library(leaflet)
library(leaflet.extras)
library(sp)
shinyApp(
ui = fluidPage(
leafletOutput("map", height = 750)
),
server = function(input, output) {
registerPlugin <- function(map, plugin) {
map$dependencies <- c(map$dependencies, list(plugin))
map
}
easyPrintPlugin <- htmlDependency("leaflet-easyprint", "2.1.8",
src = c(href = "https://github.com/rowanwins/leaflet-easyPrint/blob/gh-pages/dist/"),
script = "index.js")
# Map
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
registerPlugin(easyPrintPlugin) %>%
onRender("function(el, x) {
L.easyPrint({
position: 'topleft',
sizeModes: ['A4Portrait', 'A4Landscape']
}).addTo(map);}")
})
}
)
Run Code Online (Sandbox Code Playgroud)
然而,一切都没有发生.它实际上是一个白色的屏幕.如果我删除onRender部分,传单正常.
不幸的是,我对Shiny,leaflet,.js和github相对较新,所以我很难确定导致问题的方面.
继此问题之后,我希望将传单地图保存和下载为 png 或 jpeg 图像。我有以下代码,但我不断收到错误消息。
ui <- fluidPage(
leafletOutput("map"),
downloadButton("dl")
)
server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles()
})
output$dl <- downloadHandler(
filename = "map.png",
content = function(file) {
mapshot(input[["map"]], file = file)
}
)
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
我尝试下载(通过单击按钮)时遇到的错误是
Warning: Error in system.file: 'package' must be of length 1
Stack trace (innermost first):
65: system.file
64: readLines
63: paste
62: yaml.load
61: yaml::yaml.load_file
60: getDependency
59: widget_dependencies
58: htmltools::attachDependencies …Run Code Online (Sandbox Code Playgroud)