2017-12-26 5 views
0

Ich habe eine Punktkarte erstellt und überlagert County Grenzen mit Python Grundkarte. Ich habe ein weiteres Shapefile, das auf der Artverteilungskarte der IUCN-Daten basiert (species_13143). Ich habe diese Formdatei auf der vorherigen Karte überlagert. Es hat gut funktioniert. Leider hat es die damit verbundenen Polygone nicht gefüllt. Ich möchte diese Polygone füllen mit Farben nach dieser Karte (ich habe keine Bedenken über Farben; einzelne Farbe ist in Ordnung)Füllen der Polygone in SHP-Datei mit Farben in Grundkarte

this map.

Ich habe die ähnliche Frage in StackOverflow gefunden. Aber nichts davon funktionierte in meinem Fall. hier beigefügter Code und relevantes Bild .. enter image description here

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 
plt.figure(figsize=(5,10)) 
map = Basemap(projection = 'merc', resolution = 'h',area_thresh = 0.5, llcrnrlon=79.2643, llcrnrlat=5.3135, urcrnrlon=82.0658, urcrnrlat=9.951) 
map.drawcoastlines(linewidth=0.5) 
map.drawcountries(linewidth=0.5) 
map.fillcontinents(alpha=0.5) 
map.drawmapboundary() 
map.drawmeridians(np.arange(0, 360, 0.5), labels=[False, False, False, True], linewidth=0.1,) 
map.drawparallels(np.arange(-90, 90, 0.5), labels=[False, True, False, False], linewidth=0.1) 
#Read district boundaries. 
sh_info=map.readshapefile('C:\\Users\\Tharindu\\Downloads\\species_13143\\species_13143',"areas",color='blue') 
shp_info = map.readshapefile('C:\\Users\\Tharindu\\downloads\\Compressed\\LKA_adm1',"areas") 
for index,row in sightings_dropped.iterrows(): 
    x,y = map(row['longitude'], row['latitude']) 
    map.plot(x, y, 'green', markersize=7, alpha=0.8,marker='o',markeredgecolor='black') 
map.drawmapscale(81.5, 5.8, 80.5, 6, 50) 
+0

Setzen Sie ein Bild von dem, wie Ihre Ausgabe aussehen soll ... indem Sie manuell malen, der Link erklärt es nicht. – user1767754

+0

Hallo, Ich habe die Frage geändert, danke im Voraus :) – Tharindu

+0

Was ist 'Sichtungen_dropped'? – swatchai

Antwort

0

Wenn ich das richtig bin Verständnis ... Im Wesentlichen alle Sie suchen sind nur in einer Shape-Datei mit dem, was Farbe zu füllen? Dies ist tatsächlich in der Grundkarte docs aufgeführt.

from matplotlib.collections import PatchCollection 
from matplotlib.patches import Polygon 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111) 

patches = [] 

for info, shape in zip(map.comarques_info, map.comarques): 
    patches.append(Polygon(np.array(shape), True)) 

ax.add_collection(PatchCollection(patches, facecolor= 'm', edgecolor='k', linewidths=1., zorder=2)) 

Ich bin ein Fan von Liste Verständnis:

from matplotlib.collections import PatchCollection 
from matplotlib.patches import Polygon 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111) 

patches = [Polygon(np.array(shape), True) for info, shape in zip(m.states_info, m.states)] 
ax.add_collection(PatchCollection(patches, facecolor= 'green', edgecolor='k', linewidths=1., zorder=2)) 

Hoffentlich hilft und ich Ihre Frage zu beantworten.

+0

Vielen Dank @Brandon Molyneaux, es hat gut funktioniert. Ich steckte darauf fest, da ich ein Anfänger für Grundkarte bin .. Danke nochmal :) – Tharindu