# -- coding: utf-8 --import xlrd
import xlrd
import matplotlib as mpl
import matplotlib.cm as cm
from matplotlib import pyplot as plt
from windrose import WindroseAxes
from numpy.random import random
from datetime import datetime
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体
#画风向风速玫瑰图
ws = random(500) * 6
wd = random(500) * 360
def 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.nrows
ws=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()
输出错误如图
|