python - matplotlib 与点颜色对应的 basemap 图例

标签 python python-2.7 matplotlib matplotlib-basemap

我制作了一张 basemap ,其中最大风速的位置根据风速绘制为绿色、黄色或红色。我现在尝试添加一个具有三种颜色的图例,但我收到此消息:

C:\Python27\lib\site-packages\matplotlib\axes.py:4747: UserWarning: 未找到标记的对象。在各个图上使用 label='...' kwarg。 warnings.warn(“未找到标记的对象。”

绘图输出正常,但没有图例。

非常感谢任何帮助。

#Produce map of North Atlantic with locations of maximum storm winds plotted 
from mpl_toolkits.basemap import Basemap  
#lat_0 and long_0 set the center of the map 
plt.figure(3)
ax = plt.gca()
map1 = Basemap(projection='merc', lat_0 = 35, lon_0 = -40,
    resolution = 'l', area_thresh = 1000.0, ax=ax,
    #set the locations of the corners of the map    
    llcrnrlon=-85.0, llcrnrlat=0.0,
    urcrnrlon=6.0, urcrnrlat=75.0)

map1.drawcoastlines()
map1.drawcountries()
map1.fillcontinents(color = 'coral')
map1.drawmapboundary()
#draw lines of longitude and latitude
map1.drawmeridians(np.arange(-80, 0, 10))
map1.drawparallels(np.arange(10, 70, 10)) 

#function to adjust colour depending on wind speed
def get_marker_colour(max_wind):
    if max_wind < 20.0:
        return ('go')
    elif max_wind < 35.0:
         return ('yo') 
    else:        
        return ('ro') 

#Plotting data on the map
for lon, lat, wind in zip(alt_long_max, lat_max, max_wind):
    x, y = map1(lon, lat)    
    marker_string = get_marker_colour(wind)
    map1.plot(x, y, marker_string, markersize=4, markeredgewidth=0.0)

import matplotlib.patches as mpatches
low = mpatches.Patch(color='green', label='<20')
med = mpatches.Patch(color='yellow', label='20-35')
high = mpatches.Patch(color='red', label='>35')
plt.legend(handles=[low,med,high],title='Wind speed')

plt.title("Location of storm maximum winds")
plt.show()

code output

最佳答案

这是您可以尝试的工作代码:

import matplotlib.patches as mpatches
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt

# color function
def colorf(wspeed):
    if wspeed<20:
        return 'green'
    elif wspeed>35:
        return 'red'
    else:
        return 'yellow'
    pass

# make up some data
npts = 30
lon = np.linspace(91,99,npts)
lat = np.linspace(21,26,npts)
wspeed = np.linspace(10,60,npts)  #wind speed 10-60

fig = plt.figure(figsize=(8,6))
ax = plt.gca()

bm = Basemap(llcrnrlon = 90, \
            llcrnrlat = 20, \
            urcrnrlon = 100, \
            urcrnrlat = 30, \
            projection='cyl', \
            resolution='c', \
            ax=ax)

# plot basic map features here

# plot storm path
for alon,alat,ws in zip(lon,lat,wspeed):   
    bm.plot(alon,alat, \
             marker='o', \
             markerfacecolor=colorf(ws), \
             markersize=12)

#create legend
low = mpatches.Patch(color='green', label='<20')
med = mpatches.Patch(color='yellow', label='20-35')
high = mpatches.Patch(color='red', label='>35')
plt.legend(handles=[low,med,high], title='Wind speed')

plt.title("Location of storm maximum winds")
plt.show()

enter image description here

关于python - matplotlib 与点颜色对应的 basemap 图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006003/

相关文章:

python - 导入错误 : No module named stack

python - 如何对列值为列表的 pandas DataFrame 进行子集化?

python - 值错误: Invalid RGBA argument: 'rgbkymc'

python:在顶部绘制带有函数线的直方图

python - pip找不到opencv

Python - 如果除法有余数则抛出异常?

python - 将每周时间序列转换为每日(使用比例标准)

python - GNUplot stdin,如何绘制多条线?

python - 试图获得对角线和

python - 散点图矩阵,输入与输出