为什么我在 Leaflet 中的 choropleth 梯度不准确?
Why is my choropleth gradient in Leaflet inaccurate?
我正在尝试使用形状文件和传单绘制等值线图。我将人口列合并到形状文件数据框中,并使用该列作为渐变的基础。合并成功,人口与县正确匹配。
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)
当我得到输出时,我可以清楚地看到渐变没有正常工作。
dataframe
map
如您所见,帕克斯县的人口非常少,但梯度表明人口非常多。阿拉帕霍县人口众多,但梯度表明人口非常少。我真的很感激任何帮助!谢谢!
编辑:当我添加悬停功能时,我可以看到每个县都读取了错误的数据,例如,当我将鼠标悬停在科罗拉多州阿拉帕霍县时,它显示的是 15,242 而不是 572,003。我添加了图片 3 来展示这个
Arapahoe hover
没有您的数据,很难确定确切的问题是什么,但这里有两个想法:
1 - 看起来您正在以字符串形式读取人口,即阿拉帕霍县的“572,003”,而这些应该转换为数字。
2 - 尝试使用 sp::merge
作为专门为合并 SPDF 开发的 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)
产生了这个:
我正在尝试使用形状文件和传单绘制等值线图。我将人口列合并到形状文件数据框中,并使用该列作为渐变的基础。合并成功,人口与县正确匹配。
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)
当我得到输出时,我可以清楚地看到渐变没有正常工作。
dataframe
map
如您所见,帕克斯县的人口非常少,但梯度表明人口非常多。阿拉帕霍县人口众多,但梯度表明人口非常少。我真的很感激任何帮助!谢谢!
编辑:当我添加悬停功能时,我可以看到每个县都读取了错误的数据,例如,当我将鼠标悬停在科罗拉多州阿拉帕霍县时,它显示的是 15,242 而不是 572,003。我添加了图片 3 来展示这个 Arapahoe hover
没有您的数据,很难确定确切的问题是什么,但这里有两个想法:
1 - 看起来您正在以字符串形式读取人口,即阿拉帕霍县的“572,003”,而这些应该转换为数字。
2 - 尝试使用 sp::merge
作为专门为合并 SPDF 开发的 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)
产生了这个: