Есть ли способ построить несколько полигонов на одном графике с помощью Python? - PullRequest
0 голосов
/ 04 июля 2019

я изучаю питонов lib gmplot и мне интересно, есть ли способ построить несколько полигонов с помощью этой библиотеки.Вот код, который я написал для построения одного полигона:

from gmplot import gmplot

gmap5 = gmplot.GoogleMapPlotter(10, 10, 7)

x = [5, 10, 10, 5]
y =[5, 5, 15, 15]
gmap5.scatter(x, y, '# FF0000', size = 40, marker = False) 

# polygon method Draw a polygon with 
gmap5.polygon(x, y, color = 'red') 

gmap5.draw( "map.html" )

Но когда я хочу построить несколько полигонов, я получаю сообщение об ошибке:

TypeError: can't multiply sequence by non-int of type 'float'

Это код, который я написал:

from gmplot import gmplot

gmap5 = gmplot.GoogleMapPlotter(10, 10, 7)

x = [[5, 10, 10, 5], [15, 15, 19, 25]]
y =[[5, 5, 15, 15], [16, 17, 25, 15]]

gmap5.scatter(x, y, '# FF0000', size = 40, marker = False) 

# polygon method Draw a polygon with 
gmap5.polygon(x, y, color = 'red') 

gmap5.draw( "map.html" )

Я также пытался использовать это: x = [(5, 10, 10, 5), (15, 15, 19, 25)] y =[(5, 5, 15, 15), (16, 17, 25, 15)], но это дает мне ту же ошибку

1 Ответ

2 голосов
/ 04 июля 2019

Итак, я думаю, что ваша проблема в том, что gmap5.scatter ожидает список точек долготы и широты, а вы пропускаете список списков.Мне удалось заставить его работать, перебирая списки в ваших списках x & y, рисуя их по одному.

Попробуйте это

from gmplot import gmplot

gmap5 = gmplot.GoogleMapPlotter(10, 10, 7)

x = [[5, 10, 10, 5], [15, 15, 19, 25]]
y =[[5, 5, 15, 15], [16, 17, 25, 15]]

for lat, long in zip(x,y):
    gmap5.scatter(lat, long, '# FF0000', size = 40, marker = False)

    # polygon method Draw a polygon with
    gmap5.polygon(lat, long, color = 'red')

gmap5.draw( "map.html" )

Делая это так, вы должныбыть в состоянии построить несколько полигонов.

Например, это также работает для меня:

from gmplot import gmplot

gmap5 = gmplot.GoogleMapPlotter(10, 10, 7)

x = [[5, 10, 10, 5], [15, 15, 19, 25], [10, 20, 25, 50, 10]]
y = [[5, 5, 15, 15], [16, 17, 25, 15], [25, 30, 35, 40, 25]]

for lat, long in zip(x,y):
    gmap5.scatter(lat, long, '# FF0000', size = 40, marker = False)

    # polygon method Draw a polygon with
    gmap5.polygon(lat, long, color = 'red')

gmap5.draw( "map.html" )

Пока соответствующие списки в x и y имеют одинаковую длину, проблем не должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...