Маркировка нескольких точек из CSV в базовой карте - PullRequest
0 голосов
/ 14 января 2020

У меня проблемы с маркировкой всех точек, нанесенных с помощью приведенного ниже кода, каждая строка в файле CSV имеет вид name, lat, lon. Точки изображаются просто отлично.

Все, что я пытался сделать, чтобы имена располагались вдоль x, y так или иначе разбрасывало все. У кого-нибудь есть советы?

with open('/.../geo/ALL.csv') as csvfile:
    reader = csv.reader(csvfile,delimiter=',')
    for data in reader:
        names.append(str(data[0]))
        lats.append(float(data[1]))
        lons.append(float(data[2]))
x,y = map(lons,lats)
map.plot(x,y,'r*',markersize=0.02,color='yellow',marker='D')

1 Ответ

0 голосов
/ 14 января 2020

Ваша цель - построить (lons, lats) точки в плоскости xy с меткой на каждой. Это один из способов сделать это:

import csv, matplotlib.pyplot as plt

names, lats, lons = [], [], []

with open('file.csv') as csvfile:
    reader = csv.reader(csvfile,delimiter=',')
    for data in reader:
        names.append(str(data[0]))
        lats.append(float(data[1]))
        lons.append(float(data[2]))


fig, ax = plt.subplots()
ax.scatter(lats, lons, marker='*', s=400) # play with 's' to control the dot size
pad = "   " # play with this to pad the label from the dot
for i, n in enumerate(names):
    ax.annotate(pad+str(n), (lats[i], lons[i])) 

plt.savefig("scatter.png") # you will find scatter.png file in the same directory


Это scatter.png Я получаю:

enter image description here

с этим file.csv CSV-файлом:

n1,1,8
n4,7,2
n2,3,14
n7,13,4
n5,9,6
n6,11,12
n3,5,10
n8,15,18
n9,17,16
...