标签: r-leaflet

R leaflet中的饼图,将计数转化为总和并更好地控制大小

我对分组标记和以小饼图形式按组呈现计数的解决方案着迷/sf/answers/4236759621/ 我只是 R,不懂 JS。我希望代码对每个数据点的值求和而不是计数(每个单独的数据点可能已经代表一个计数)。我想根据值控制更多气泡的大小。你能帮助我并展示如何更改 js 代码,以便它对数据点的值进行求和,以及如何增加/控制气泡的大小?

这里有一个所需的解决方案,对非饼图标记进行求和而不是计数:How to display the value (sum)rather than count of labels in a dc.leaflet.js 这里 有一个解决方案,它还可以控制气泡的大小:带有总和(不是计数)的聚类传单标记:如何获得一致的圆形红色形状和标签格式,就像非聚类标记一样

原始代码来自/sf/users/189819871/ @DanielBonnery

library(leaflet)
library(dplyr)
#Creates data
data("breweries91",package="leaflet")
#set.seed(1);
breweries91$goodbear<-sample(as.factor(c("terrific","marvelous","culparterretaping")),nrow(breweries91),replace=T)
#Colors
joliepalette<-c("red","green","blue")[1:nlevels(breweries91$goodbear)]
getColor <- function(breweries91) {joliepalette[breweries91$goodbear]}

icons <- awesomeIcons(
  icon = 'ios-close',
  iconColor = 'black',
  library = 'ion',
  markerColor = getColor(breweries91)
)

#Generate the javascript

jsscript3<-
  paste0(
"function(cluster) {
const groups= [",paste("'",levels(breweries91$goodbear),"'",sep="",collapse=","),"];
const colors= {
groups: [",paste("'",joliepalette,"'",sep="",collapse=","),"],
center:'#ddd',
text:'black'
};
const markers= cluster.getAllChildMarkers();

const proportions= groups.map(group …
Run Code Online (Sandbox Code Playgroud)

javascript r leaflet r-leaflet leaflet.markercluster

7
推荐指数
1
解决办法
857
查看次数

从R中生成的Leaflet地图的json加载Quarto html地图数据

我创建了一篇四开版博客文章,其中包含许多leaflet在 R 中生成的地图。由于每个地图的数据都嵌入在 html 文件中,因此文件本身非常大。这会导致托管该文件的服务器出现问题。

我想让html文件变小。embed-resources: false Quarto 中的YAML 选项意味着库(例如leaflet.js)存储在单独的文件中。有帮助,但数据仍然存储在 html 中(每个地图一次)。我正在尝试从单独的文件加载数据本身。这是一个最小的文件示例qmd

---
format:
  html:
    embed-resources: false  
---

```{r}
leaflet::leaflet(elementId = "map1") |>
    leaflet::addTiles() |>
    leaflet::addMarkers(lng = 174.768, lat = -36.852, popup = "The birthplace of R")
```
Run Code Online (Sandbox Code Playgroud)

当我quarto render这样做时,它会创建一个 html 文件,该文件在浏览器中打开时显示地图。该文件包含以下地图数据<div>

<div class="leaflet html-widget html-fill-item-overflow-hidden html-fill-item" id="map1" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="map1">{**json**}</script>
</div>
Run Code Online (Sandbox Code Playgroud)

我写的地方{**json**}有一长串 json,其中包含地图坐标、CRS 和各种选项。

在我看来,我也许可以将 json 内容复制到文件中,然后更改标签<script>以从该文件加载数据:

---
format:
  html: …
Run Code Online (Sandbox Code Playgroud)

javascript r leaflet r-leaflet quarto

7
推荐指数
1
解决办法
346
查看次数

为什么 addPolylines 在 R Shiny 传单地图上的工作方式不同?

我有 R 代码,它创建了一个传单地图,其中的点由addPolylines().

library(shiny)
library(leaflet)

station = c("A", "B", "C", "D", "E", "F")
latitude = c(-1.63, -1.62, -1.62, -1.77, -1.85, -1.85)
longitude = c(34.3, 34.4, 34.7, 34.3, 34.5, 34.7)
big = c(0, 20, 60, 90, 50, 10)
small = c(100, 80, 40, 10, 50, 90)
colour = c("blue", "blue", "red", "red", "black", "black")
group = c("A", "A", "B", "B", "C", "C")

df = cbind.data.frame(station, latitude, longitude, big, small, colour, group)

colnames(df) = c("station", "latitude", "longitude", "big", "small", "colour", …
Run Code Online (Sandbox Code Playgroud)

r leaflet shiny r-leaflet

6
推荐指数
1
解决办法
3165
查看次数

无法抑制 blogdown/knitr 中的消息

这是用 blogdown 创建的博客文章

R 代码块以

```{r, echo = FALSE, message = FALSE, warning = FALSE}
Run Code Online (Sandbox Code Playgroud)

但是,每次我使用读取 shapefile 时都会出现三条消息 sf::st_read

如何防止这些消息出现在帖子中?

其答案是否是在页面大约knitr选择?

r knitr r-leaflet

6
推荐指数
1
解决办法
908
查看次数

R &amp; Leaflet:如何将客户端事件绑定到多边形

这是一个简单的闪亮应用程序:

library(shiny)
library(leaflet)
nc = sf::st_read(system.file("shape/nc.shp", package="sf"))

ui <- function(request){
  tagList(
    selectInput("color", "color", c("blue", "red", "green")),
    leafletOutput("map")
  )
}

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

  output$map <- renderLeaflet({
    leaflet(nc) %>%
      addPolygons(color = input$color)
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

我想在每个多边形上的单击时绑定一个事件,但我希望它仅从客户端发生,我不希望它通过 R。例如,我想在用户单击时发送警报在多边形上。

我有一些黑客代码可以做到这一点,但我希望有一种干净的方法来做到这一点。我正在寻找一种从 R 定义看起来像的东西的方法addPolygon(onClick = "alert('hello there')")

需要明确的是,我不希望这通过服务器,我希望一切都在浏览器中发生。

它适用于以下 JS 代码(在 ext/script.js 中)

$(document).ready(function() {
    Shiny.addCustomMessageHandler('bindleaflet', function(arg) {
        $("#" + arg).find("path").remove();
        wait_for_path(arg);
    })
});

var wait_for_path = function(id) {
    if ($("#" + id).find("path").length !== 0) {
        $("#" …
Run Code Online (Sandbox Code Playgroud)

javascript r leaflet shiny r-leaflet

6
推荐指数
1
解决办法
310
查看次数

R 中并排的 2 个光栅图像的传单

{leaflet.extras2}实现传单并排插件并提供这个最小的示例:

library(leaflet)
library(leaflet.extras2)

leaflet(quakes) %>%
  addMapPane("left", zIndex = 0) %>%
  addMapPane("right", zIndex = 0) %>%
  addTiles(group = "base", layerId = "baseid",
           options = pathOptions(pane = "right")) %>%
  addProviderTiles(providers$CartoDB.DarkMatter, group="carto", layerId = "cartoid",
                   options = pathOptions(pane = "left")) %>%
  addCircleMarkers(data = breweries91[1:15,], color = "blue", group = "blue",
                   options = pathOptions(pane = "left")) %>%
  addCircleMarkers(data = breweries91[15:20,], color = "yellow", group = "yellow") %>%
  addCircleMarkers(data = breweries91[15:30,], color = "red", group = "red",
                   options = pathOptions(pane = "right")) …
Run Code Online (Sandbox Code Playgroud)

r leaflet r-raster r-leaflet

6
推荐指数
1
解决办法
1134
查看次数

使用浏览器打开 .html(= .Rmd 输出)时,传单层图块不可切换

几天来,基本图层图块“OSM”和“Stamen.TonerLite”(我已经使用了一年多作为我的地图的标准图块)没有正确显示 - 即不再可能在它们之间切换.

只要地图在 RStudio 和 RStudio Viewer 中显示,一切都可以完美运行。但是,一旦我在浏览器中打开 .Rmd 输出的相应 .html 文件(我尝试了 chrome、internet explorer、edge 和 firefox),就不可能在磁贴之间切换了。要么显示“OSM”,我不能切换到“Stamen.TonerLite”,反之亦然。
我尝试了不同的图层瓷砖或超过 2 层瓷砖,但结果相同。即使我切换到其他图层,也始终只有一层图块可见。

我的案例的可重现示例

---
title: "stackoverflow"
author: " "
date: " "
output: html_document
---

```{r, echo = T}
library(leaflet)

m <- leaflet() %>%
     addTiles(group = "OSM") %>%
     addProviderTiles("Stamen.TonerLite") %>%
     addLayersControl(baseGroups = c("OSM", "Stamen.TonerLite")) %>%
     addCircleMarkers(lat = 47.4,
                      lng = 9.37,
                      radius = 10,
                      fillOpacity = 1.0)
m
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明

html r knitr r-leaflet

5
推荐指数
1
解决办法
219
查看次数

如何设置传单地图的缩放级别/视图

leaflet在 RShiny 中有一张地图,其中绘制了标记,一旦我单击一个标记,它就会添加圆圈以显示标记的所有相关点。

我想要做的是以所有相关圆圈都可见的方式设置地图的缩放/视图。

圆圈的数量因标记而异,即有些标记有 1 或 2 个圆圈,而有些则有更多。此外,圆圈的位置在美国各地各不相同,因此它们可以放置在一个城市或另一个州。

以下是我用来向现有地图添加圆圈的代码

  proxy <-leafletProxy("map",data = df)%>%
  clearMarkers()%>%
  addCircleMarkers(lat = ~lat,lng = ~lng,layerId = ~circle_pt,fillColor = 
 'green',opacity = 0.5,color = 'red',fillOpacity = 1)%>% clearPopups()%>%
  addPopups(lat=~lat,lng=~lng,~as.character(circle_pt))
Run Code Online (Sandbox Code Playgroud)

map=带有标记的原始地图 df=lat lng 与地图中选定标记的相关属性的圆圈

显示标记的原始地图

圆圈显示在标记点击事件上

我想设置缩放级别,如图 2 所示。

请帮助我确定如何计算shiny.

问候,

r leaflet shiny r-leaflet

5
推荐指数
1
解决办法
1万
查看次数

在 Shiny 中使用 LeafletProxy 更新时在地图上显示加载微调器

'shinycssloaders' 包被开发为一个简单的包装器,用于为 UI 输出提供加载图标,效果很好。不幸的是,它不适用于通过 LeafletProxy 更新的地图(只有生成的初始地图将使用加载图标)。

有没有已知的解决方案?

r leaflet shiny r-leaflet

5
推荐指数
1
解决办法
1597
查看次数

为什么我失去了使用 Mapshot 的能力

我经常使用mapshot来发送交互式地图数据,但最近,虽然我可以用mapview制作我想要的地图,但我无法保存它们。

例子:

map<- mapview(mapdata, zcol = "columnofinterest", burst = TRUE)

mapshot(map, url = paste0(getwd(), "/whatIwanttocallmymap.html"))

File whatIwanttocallmymap_files/PopupTable-0.0.1/popup.css not found in resource path
Error: pandoc document conversion failed with error 99
Run Code Online (Sandbox Code Playgroud)

恐怕我在获取包裹的方式上搞砸了。带有包名称的文件夹出现在我设置为 wd 的区域中,而不是出现在我的 R 库中

感谢您提供的任何帮助/建议

r r-leaflet r-mapview r-library

5
推荐指数
0
解决办法
1418
查看次数