# -- coding: utf-8 --import xlrdimport xlrdimport matplotlib as mplimport matplotlib.cm as cmfrom matplotlib import pyplot as pltfrom windrose import WindroseAxesfrom numpy.random import randomfrom datetime import datetimempl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 #画风向风速玫瑰图ws = random(500) * 6wd = random(500) * 360def new_axes(): #定义函数 fig = plt.figure(figsize=(8, 8), dpi=80, facecolor='w', edgecolor='w') rect = [0, 0, 1, 1] ax = WindroseAxes(fig, rect, axisbg='w') fig.add_axes(ax) return ax#...and adjust the legend box#标签图例def set_legend(ax): l = ax.legend(shadow=False, bbox_to_anchor=[1, 0]) plt.setp(l.get_texts(), fontsize=12)#读取数据#for sn in range(2): #2个sheet中都有数据,一次绘制多个风玫瑰图 #workspace=(r"……工作空间")mybook=xlrd.open_workbook(r'fxfs.xlsx')#打开文件mysheet=mybook.sheet_by_index(0)rows=mysheet.nrowsws=mysheet.col_values(5) #风向wd=mysheet.col_values(6) #风速ws.pop(0)ws.pop(0)wd.pop(0)wd.pop(0) sl=[0,0.2,1.5,3.3,5.4,7.9] #风速重分类间断点 ax=new_axes()#ax.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')ax.contourf(wd,ws,bins=sl,normed=True,cmap=cm.cool) #使用matplotlib内置colormap进行色彩分割ax.set_title(mysheet.name,fontsize=15,loc='right')set_legend(ax)plt.show()错误如图 |