如何在传单Map R上创建一个等值线

use*_*er1 0 r leaflet choropleth

问题

我加载了英国的shapefile,没问题.让我们称呼它FILE1.我还有一个包含2列的数据框文件:经度,纬度.我打电话给这个FILE2.我试图绘制FILE2shapefile地图上的坐标FILE1并创建一个等值区域图

我也收到以下错误:

polygonData.default(data)出错:不知道如何从类tbl_df的对象获取路径数据

我从这个问题中得到了代码:Choropleth使用传单包在R中进行映射 并对其进行调整以适合我的数据

#Plot the Leaflet map----
mymap <- leaflet() %>% 
  addProviderTiles("OpenStreetMap.Mapnik") %>%
  addPolygons(data = coords, #This is data frame of U.K long and lat
              fillColor = ~palette(file$TotalByPostcode), 
              fillOpacity = 0.6,       
              color = "darkgrey",      
              weight = 1.5,            
              popup = popup1)%>%
  addLegend(position = 'topleft', 
            colors = c('#fee0d2',
                       '#fcbba1',
                       '#fc9272',
                       '#fb6a4a',
                       '#ef3b2c',
                       '#cb181d',
                       '#a50f15',
                       '#67000d'), 
            labels = c('0',"","","","","","",'100'), 
            opacity = 0.6,      
            title = "Totals") 

print(map)
Run Code Online (Sandbox Code Playgroud)

这是我的数据框:

数据框

jaz*_*rro 7

我手里没有你的数据.但我想你误解了传单包的一件事.如果您?leaflet在R控制台中键入内容,您将在帮助页面中看到以下信息.

一个数据对象.当前支持的对象是矩阵,数据框,sp包中的空间对象(SpatialPoints,SpatialPointsDataFrame,Polygon,Polygons,SpatialPolygons,SpatialPolygonsDataFrame,Line,Lines,SpatialLines和SpatialLinesDataFrame),以及来自sf包的空间数据帧.

这告诉您传单可以采用哪种数据对象.记住这一点,让我们检查以下两种情况.

CASE1:SpatialPolygonsDataFrame

在这种情况下,我使用raster包下载了一个SpatialPolygonsDataFrame,它UK在我的代码中调用.我还创建了一个名为的虚拟数据框mydf.在addPolygons(),我正在使用空间对象.一张地图很好地出来了.

library(raster)
library(leaflet)
library(tidyverse)

# Get UK polygon data
UK <- getData("GADM", country = "GB", level = 2)

### Create dummy data
set.seed(111)
mydf <- data.frame(place = unique(UK$NAME_2),
                   value = sample.int(n = 1000000, size = n_distinct(UK$NAME_2), replace = TRUE))

### Create five colors for fill
mypal <- colorQuantile(palette = "RdYlBu", domain = mydf$value, n = 5, reverse = TRUE)

leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 55, lng = -3, zoom = 6) %>%
addPolygons(data = UK,
            stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
            fillColor = ~mypal(mydf$value),
            popup = paste("Region: ", UK$NAME_2, "<br>",
                          "Value: ", mydf$value, "<br>")) %>%
addLegend(position = "bottomright", pal = mypal, values = mydf$value,
          title = "UK value",
          opacity = 1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

CASE2:tbl_df

现在让我们看看常规数据框架会发生什么.我不确定你究竟拥有什么样的数据.但是,有一件事是肯定的,它tbl_df在课堂上.我想确保一个对象tbl_df在课堂上.所以我做了以下几点.我将多边形数据(即UK)转换为数据框.我们来看看课程.

x <- as_data_frame(fortify(UK))
class(x)
#[1] "tbl_df"     "tbl"        "data.frame"
Run Code Online (Sandbox Code Playgroud)

在我们继续之前,我想再次提到你不能用普通数据框绘制一个多边形,包括一个tbl_df在类中的数据框.这就是我在本文开头所说的.因此,下面的代码,其中我只是改变UKx,返回错误消息.

leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 55, lng = -3, zoom = 6) %>%
addPolygons(data = x,
            stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
            fillColor = ~mypal(mydf$value)) %>%
addLegend(position = "bottomright", pal = mypal, values = mydf$value,
          title = "UK value",
          opacity = 1)  
Run Code Online (Sandbox Code Playgroud)

polygonData.default(data)出错:不知道如何从类tbl_df的对象获取路径数据

我希望这个演示能够清除你的想法.要采取的教训是:使用sp或sf包中的空间类对象.在你的情况,你或许会想使用FILE1addPolygons().确保它是一个空间对象.如果您有正确的文件,您将在图块地图顶部看到多边形.