Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为什么传单上的脉络膜梯度不准确?_R_Leaflet_Choropleth_Gradient - Fatal编程技术网

R 为什么传单上的脉络膜梯度不准确?

R 为什么传单上的脉络膜梯度不准确?,r,leaflet,choropleth,gradient,R,Leaflet,Choropleth,Gradient,我正试图用形状文件和传单来绘制一个choropleth。我将一个填充列合并到shape file数据框中,并使用该列作为渐变的基础。合并是成功的,因为人口与县正确匹配 leaflet(data = countiesshp) %>% addProviderTiles(providers$Esri.WorldStreetMap) %>% addPolygons(fillColor =~colorQuantile("Greens", countiesshp@data$population.

我正试图用形状文件和传单来绘制一个choropleth。我将一个填充列合并到shape file数据框中,并使用该列作为渐变的基础。合并是成功的,因为人口与县正确匹配

leaflet(data = countiesshp) %>%
addProviderTiles(providers$Esri.WorldStreetMap) %>%
addPolygons(fillColor =~colorQuantile("Greens", countiesshp@data$population.y)(countiesshp@data$population.y),
          fillOpacity = 0.7,
          color = 'Black',
          weight = 1)
当我得到输出,我可以清楚地看到梯度是不正常工作

如你所见,帕克斯县的人口非常少,但梯度表明人口非常多。阿拉帕霍县人口众多,但梯度表明人口非常少。我真的很感激任何帮助!谢谢

编辑:当我添加悬停功能时,我可以看到每个县都读取了错误的数据,例如,当我悬停在阿拉帕霍县时,它显示的是15242,而不是572003。我添加了图3来显示这一点
如果没有您的数据,很难确定确切的问题是什么,但这里有两个想法:

1-似乎您在人口中读取字符串,即阿拉帕霍县的“572003”,此时这些字符串应转换为数字

2-尝试使用专门为合并SPDF而开发的
merge
函数
sp::merge

我对您的代码进行了一些修改,以创建一个更具重现性的示例:

coshp <- tigris::counties(state = "Colorado")

library(leaflet)

data <- data.frame(NAME = c("Arapahoe", "Boulder", "Clear Creek", "Larimer"),
                   population = c("572,003", "294,567", "9,088", "299,630"))
data$population <- as.numeric(gsub(",", "", data$population))

coshp_merged <- sp::merge(coshp, data)

leaflet(data = coshp_merged) %>%
  addProviderTiles(providers$Esri.WorldStreetMap) %>%
  addPolygons(fillColor =~colorQuantile("Greens", coshp_merged$population)(coshp_merged$population),
              fillOpacity = 0.7,
              color = 'Black',
              weight = 1)

coshp谢谢!我需要执行sp::merge