python 风玫瑰图,Python画玫瑰
这篇文章主要介绍了利用大蟒绘制多种风玫瑰图,风玫瑰是由气象学家用于给出如何风速和风向在特定位置通常分布的简明视图的图形工具,下文绘制实现详情,需要的小伙伴可以参考一下
目录
前言导入模块读取数据计算风速的u、v分量紫外线风速散点图(含透明度)风玫瑰图(多种形式)绘制特定月份风玫瑰图绘制风速频率直方图在地图上绘制风玫瑰图
前言
风玫瑰是由气象学家用于给出如何风速和风向在特定位置通常分布的简明视图的图形工具。它也可以用来描述空气质量污染源。风玫瑰工具使用Matplotlib作为后端。
安装方式直接使用:
点安装风向频率图
导入模块
进口熊猫作为螺纹中径
将数组作为铭牌导入
从绘制精美的图表导入pyplot作为血小板计数
将matplotlib.cm作为厘米导入
从数学导入圆周率
进口风玫瑰
从风向频率图导入WindroseAxes,WindAxes,plot_windrose
从mpl _工具包。轴_网格1。插入_定位器导入嵌入_轴
将cartopy.crs导入为全国汽车越野系列赛
将cartopy.io.img_tiles导入为cimgt
读取数据
df=pd.read_csv( ./sample_wind_poitiers.csv ,parse_dates=[Timestamp])
df=df.set_index(时间戳)
计算风速的u、v分量
df[速度_x]=df[速度] * np.sin(df[方向] * pi/180.0)
df[速度_y]=df[速度] * np.cos(df[方向] * pi/180.0)
uv风速散点图(含透明度)
fig,ax=plt.subplots(figsize=(8,8),dpi=80)
x0,x1=ax.get_xlim()
y0,y1=ax.get_ylim()
斧头。set _ aspect(ABS(x1-x0)/ABS(y1-y0))
斧头。set _ aspect("equal ")
ax.scatter(df[速度x],df[速度y],=0.25)
df.plot(kind=scatter ,x=speed_x ,y=speed_y ,alpha=0.05,ax=ax)
Vw=80
ax.set_xlim([-Vw,Vw])
ax.set_ylim([-Vw,Vw])
风玫瑰图(多种形式)
ax=WindroseAxes.from_ax()
ax.bar(测向方向值,测向速度值,bin=NP。arange(0.01,10,1),cmap=cm.hot,lw=3)
ax.set_legend()
ax=WindroseAxes.from_ax()
ax.box(df.direction.values,df.speed.values,bin=NP。arange(0.01,10,1),cmap=cm.hot,lw=3)
ax.set_legend()
plot_windrose(df,kind=contour ,bin=NP。arange(0.01,8,1),cmap=cm.hot,lw=3)
绘制特定月份风玫瑰图
def plot_month(df,t_year_month,*args,**kwargs):
by=年_月
df[by]=df。索引。地图(lambda dt :(年月日))
df _月=df[df[by]=t _年_月]
ax=plot_windrose(df_month,*args,**kwargs)
回力斧
plot_month(df,(2014,7),kind=contour ,bins=np.arange(0,10,1),cmap=cm.hot)
plot_month(df,(2014,8),kind=contour ,bins=np.arange(0,10,1),cmap=cm.hot)
plot_month(df,(2014,9),kind=contour ,bins=np.arange(0,10,1),cmap=cm.hot)
绘制风速频率直方图
bin=NP。arange(0,30 1,1)
垃圾箱=垃圾箱[1:]
plot_windrose(df,kind=pdf ,bins=np.arange(0.01,30,1),normed=True)
在地图上绘制风玫瑰图
proj=ccrs .平板马车()
fig=plt.figure(figsize=(12,6))
minlon,maxlon,minlat,maxlat=(6.5,7.0,45.85,46.05)
main_ax=fig.add_subplot(1,1,1,projection=proj)
main_ax.set_extent([minlon,maxlon,minlat,maxlat],crs=proj)
main _ ax。网格线(draw _ labels=True)
main _ ax。地址_ WMS(WMS= http://vmap 0。瓷砖。操作系统地理。org/WMS/vmap 0 ,layers=[basic])
查姆伦,查姆拉特=(6.8599,45.9259)
帕西_隆,帕西_拉特=(6.7,45.9159)
wrax_cham=插入轴(主轴,
宽度=1,
高度=1,
loc=中心,
bbox_to_anchor=(cham_lon,cham_lat),
bbox _ transform=main _ ax。transdata,
axes_class=windrose .风玫瑰斧,
高度度数=0.1
wrax_passy=inset_axes(main_ax,
宽度=100% ,
高度=100% ,
bbox _ to _ anchor=(passy _ lon-height_deg/2,passy_lat-height_deg/2,height_deg,height _ deg),
bbox _ transform=main _ ax。transdata,
axes_class=windrose .风玫瑰斧,
)
wrax _ cham。酒吧(df。方向。values,df.speed.values,bin=NP . arange(0.01,10,1),lw=3)
wrax _ passy。酒吧(df。方向。values,df.speed.values,bin=NP . arange(0.01,10,1),lw=3)
对于:中的削减
ax.tick_params(labelleft=False,labelbottom=False)
最后:
这样画出来的风玫瑰图看起来还是很漂亮的,而且还能大大提高工作效率,对于那些研究人员来说很有帮助。并且把代码效果放在上面。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。