You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取美国城市经纬度用于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:27:46