2016-09-30 4 views
0

У меня есть базовая карта построена с помощью следующего фрагмента кода:Отображение Легенда в Matplotlib BaseMap

#setting the size 
plt.figure(figsize=(20,10)) 
#iterating through each country in shape file and filling them with color assigned using the colors array 
for nshape,seg in enumerate(m.countries): 
#getting x,y co-ordinates 
    xx,yy = zip(*seg) 
#getting the corresponding color 
    color = colors[countryisos[nshape]] 
#plotting them on the map 
    plt.fill(xx,yy,color,edgecolor=color) 
#setting the parallels with 10 degree interval from -90 to 90 degrees 
parallels = np.arange(-80.,81,10.) 
m.drawparallels(parallels,labels=[True,True,True,True]) 
#setting the meridians with 20 degree interval from -180 to 180 degrees 
meridians = np.arange(10.,351.,20.) 
m.drawmeridians(meridians,labels=[True,False,False,True]) 
#setting the title for the plot 
plt.title('Number of Disasters by Country: 1981-2014') 

Три цвета присвоены цвета массива с помощью этой функции.

colors={} 
#iterating through each country in shape file and setting the corresponding color 
for s in countryisos: 
    if countvalues[s]<=200: 
     colors[s] = 'orange' 
    elif countvalues[s]>200 and countvalues[s]<=400: 
     colors[s] = 'yellow' 
    else: 
     colors[s] = 'red' 

Как установить легенду для этого графика с тремя цветами, определяющими диапазон? Я не могу использовать параметр «label» внутри функции plot, так как он находится в цикле for.

ответ

2

Решено использовать его с помощью патчей в matplotlib. Я просто добавил этот код ниже, чтобы отобразить пользовательскую легенду.

#setting the legend for the plot using patch 
lt = mpatches.Patch(color='orange', label='<200') 
btwn = mpatches.Patch(color='yellow', label='200-400') 
gt = mpatches.Patch(color='red', label='>400') 
plt.legend(handles=[lt,btwn,gt],title='Number of disasters', loc=3) 
Смежные вопросы