获取美国城市经纬度用于Plotly绘图:有无类似ggplot2 map_data的函数?
获取美国城市经纬度坐标用于Plotly绘图的方法
嘿,我懂你想要拿到美国城市的lat/long坐标来做Plotly可视化,而且已经熟悉ggplot2里的map_data()函数来获取州级、县级数据对吧?可惜map_data("city")没法用,别慌,这里有几个简单靠谱的方案:
1. 用maps包的us.cities数据集(最直接)
其实map_data()本身就是基于maps包实现的,而maps包里刚好有现成的美国城市坐标数据集——us.cities,完全能满足你的需求。这个数据集包含了城市名称、所属州缩写、纬度、经度,甚至还有人口数据。
你可以直接调用它:
library(maps) # 加载美国城市数据 us_city_coords <- maps::us.cities # 按需筛选列(比如只保留核心信息) clean_city_data <- us_city_coords[, c("name", "country.etc", "lat", "long")] head(clean_city_data)
name:城市名称country.etc:对应美国州的缩写lat:纬度long:经度
2. 获取更全的美国城市/城镇数据
如果需要覆盖更多小型城镇,你可以用maps包的world.cities数据集,然后筛选出美国的部分:
# 加载全球城市数据,筛选美国区域 all_us_cities <- subset(maps::world.cities, country.etc == "USA")
3. 和Plotly快速结合示例
拿到数据后,就能直接用来做Plotly可视化了,比如简单的散点图:
library(plotly) plot_ly(all_us_cities, x = ~long, y = ~lat, type = "scatter", mode = "markers", text = ~paste(name, country.etc, sep = ", ")) %>% layout(title = "美国城市坐标分布", xaxis = list(title = "经度"), yaxis = list(title = "纬度"))
为什么map_data("city")不生效?
补充一下:map_data()函数支持的参数只有"state"、"county"、"usa"、"world"这些预设的地图图层,并没有"city"这个选项,所以直接调用会失败,得用上面提到的专门城市数据集。
内容的提问来源于stack exchange,提问作者Harikrishnan Balachandran
相关产品推荐
相关产品推荐

