【问题标题】:How to name each city in a matplotlib/geopandas map from csv file?如何从 csv 文件命名 matplotlib/geopandas 地图中的每个城市?
【发布时间】:2021-07-02 01:46:26
【问题描述】:

我有一个包含塞内加尔城市的 csv 文件,有一个 city 列,我已经使用 long 和 lat 列来绘制点,但现在我希望每个点旁边都有其城市名称,并且也许稍后会有更多信息。我怎么能用 matplotlib 做到这一点?谢谢。

import geopandas as gpd
import matplotlib.pyplot as plt
import os
import pandas as pd

file = os.path.join("senegal_administrative","senegal_administrative.shp")

cities_file = os.path.join("senegal_administrative","sn.csv")

cities = pd.read_csv(cities_file)
senegal = gpd.read_file(file)

## THE MAP IS PLOTED HERE
axis = senegal.plot(color="lightblue",edgecolor = "black",figsize = (20,20))

def_geo = gpd.GeoDataFrame(cities,geometry = gpd.points_from_xy(cities.lng,cities.lat))
print(def_geo)

## I PLOT THE POINTS HERE
def_geo.plot(ax = axis,color = "black")

plt.show()

如果您需要这些文件,请提供 Dropbox 链接,我非常感谢:https://www.dropbox.com/sh/dr54pbc9a5zc5ke/AADMxnYHe4maAnwKArCsh1m8a?dl=0

【问题讨论】:

  • 使用axis.annotate() 绘制注释。运行help(axis.annotate)查看帮助文档。
  • 对我的回答有任何反馈吗?
  • 哦,我很抱歉,注释是解决方法!我完全忘了复出并提及它。

标签: python matplotlib plot maps geopandas


【解决方案1】:

要注释地图,您可以使用.annotate() 函数。 以下是代码的相关部分:

axis = senegal.plot(color="lightblue",edgecolor = "black",figsize = (12,12))
for idx,dat in cities.iterrows():
    #print(dat.city, dat.lng, dat.lat)
    axis.scatter(dat.lng, dat.lat, s=10, color='red')
    axis.annotate(dat.city, (dat.lng, dat.lat))

情节将与此类似:

【讨论】:

  • 是的,我实际上设法使它工作,但我忘了在这里提及它,因为我不幸被困在另一项任务上,我试图弄清楚如何在每次如果可能的话,用户悬停在一个城市上。不过谢谢!
  • @Dems314 如果您需要交互式(网络)地图,请查找foliumpython-visualization.github.io/folium/index.html。 Folium popup 非常适合数据可视化。
  • 遗憾的是,你的作业要求我们不使用任何 WEB 工具,这就是为什么它让我很头疼。
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多