在R中创建带有自定义标签的Leaflet地图

3
我想使用R中的世界地图来可视化我的数据,标签应添加在某些点(给定坐标)。标签应为一些高度与数据表中的值成比例的三维矩形。我将使用R包“leaflet”(或任何更好的替代品)。全球大约有10-15个点,每个位置有两个值(具体而言,这些点是主要油田的位置,而值是例如大小和储量)。我希望每个点都有两个这样的三维矩形,比如,红色和蓝色相互靠近,高度适当,并在其上标有数字,并用油田的名称标记每个点。我发现了使用leaflet包添加圆圈到地图上的解决方案。
代码加载数据和库:
library(leaflet)
basins<-read.csv("somedata.csv")

以下是somedata.csv的结构(仅包含四个数据行作为最小工作示例):

basin,lat,lon,res.density,rel.area
Central Sumatra,1,96,16.7,75
North Sea,58.4,2,20,24
Maracaibo basin,9,-71,74.4,14.3
Los Angeles,33,-118,31.2,32

圆形标记的地图是通过命令调用的。
m=leaflet(data = basins) %>% addTiles() %>% addCircleMarkers(~lon, ~lat , popup = ~as.character(basin),radius=~res.density*0.4,label=~htmlEscape(basin),labelOptions=labelOptions(noHide=T,textOnly=TRUE,direction="bottom"))

然而,这个解决方案并不是很好,因为它不允许可视化第二个值(通过参数radius =〜res.density,其中res.density是.csv表中盆地的第一个值的名称)。
我想复制类似于GMT生成的此图像。仅需要一个简单的(2D)地图即可,但每个点需要两个这样的矩形,其中包含字段名称和每个矩形的值。
来自GMT软件包的图像。

enter image description here

1个回答

10
您可以通过使用包leaflet.minicharts来添加条形图,具体操作如下:
library("leaflet")
library("htmltools")
library("leaflet.minicharts")

basins <- read.table(text="basin,lat,lon,res.density,rel.area
Central Sumatra,1,96,16.7,75
North Sea,58.4,2,20,24
Maracaibo basin,9,-71,74.4,14.3
Los Angeles,33,-118,31.2,32", header=T, sep=",")

leaflet(data = basins) %>% 
  addProviderTiles("OpenStreetMap.Mapnik") %>% 
  addLabelOnlyMarkers(lng = ~lon, lat = ~lat, label = ~htmlEscape(basin),
                      labelOptions = labelOptions(noHide = TRUE, textOnly = TRUE, 
                                                  direction = "bottom", offset = c(0,5))) %>%
  addMinicharts(basins$lon, basins$lat, type = "bar", 
                chartdata = basins[, c("res.density", "rel.area")], width = 50, height = 60)

可能为了简化,您可以省略addCircleMarkers。 enter image description here

这是一个很棒的包。是否可以调整图例,以便提供自定义说明,而不仅仅是变量名称?Leaflet.minicharts文档没有提到此选项。当然,可以使用%>%addLegend手动添加图例,但minicharts的适当图例在其位置上看起来样式良好。 - astrsk
从软件包文档中可以看到,addMinicharts参数可以调整图例的位置。如果您想在图例中使用不同的字符串,只需更改列的名称即可。否则,可以使用addLegend。 - Patrik_P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接