用Python怎样绘制风玫瑰图,代码是什么
Admin 2022-09-03 群英技术资讯 1374 次浏览
Matplotlib
作为后端。安装方式直接使用:
pip install windrose
import pandas as pd import numpy as np from matplotlib import pyplot as plt import matplotlib.cm as cm from math import pi import windrose from windrose import WindroseAxes, WindAxes, plot_windrose from mpl_toolkits.axes_grid1.inset_locator import inset_axes import cartopy.crs as ccrs import cartopy.io.img_tiles as cimgt
df = pd.read_csv("./sample_wind_poitiers.csv", parse_dates=['Timestamp']) df = df.set_index('Timestamp')
df['speed_x'] = df['speed'] * np.sin(df['direction'] * pi / 180.0) df['speed_y'] = df['speed'] * np.cos(df['direction'] * pi / 180.0)
fig, ax = plt.subplots(figsize=(8, 8), dpi=80) x0, x1 = ax.get_xlim() y0, y1 = ax.get_ylim() ax.set_aspect(abs(x1-x0)/abs(y1-y0)) ax.set_aspect('equal') ax.scatter(df['speed_x'], df['speed_y'], alpha=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(df.direction.values, df.speed.values, bins=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, bins=np.arange(0.01,10,1), cmap=cm.hot, lw=3) ax.set_legend()
plot_windrose(df, kind='contour', bins=np.arange(0.01,8,1), cmap=cm.hot, lw=3)
def plot_month(df, t_year_month, *args, **kwargs): by = 'year_month' df[by] = df.index.map(lambda dt: (dt.year, dt.month)) df_month = df[df[by] == t_year_month] ax = plot_windrose(df_month, *args, **kwargs) return ax 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)
bins = np.arange(0,30+1,1) bins = bins[1:] plot_windrose(df, kind='pdf', bins=np.arange(0.01,30,1),normed=True)
proj = ccrs.PlateCarree() 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.gridlines(draw_labels=True) main_ax.add_wms(wms='http://vmap0.tiles.osgeo.org/wms/vmap0',layers=['basic']) cham_lon, cham_lat = (6.8599, 45.9259) passy_lon, passy_lat = (6.7, 45.9159) wrax_cham = inset_axes(main_ax, width=1, height=1, loc='center', bbox_to_anchor=(cham_lon, cham_lat), bbox_transform=main_ax.transData, axes_class=windrose.WindroseAxes, height_deg = 0.1 wrax_passy = inset_axes(main_ax, width="100%", height="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.WindroseAxes, ) wrax_cham.bar(df.direction.values, df.speed.values,bins=np.arange(0.01,10,1), lw=3) wrax_passy.bar(df.direction.values, df.speed.values,bins=np.arange(0.01,10,1), lw=3) for ax in [wrax_cham, wrax_passy]: ax.tick_params(labelleft=False, labelbottom=False)
最后:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python使用apscheduler模块设置定时任务,APScheduler全称Advanced Python Scheduler 作用为在指定的时间规则执行指定的作业,本文对Python APScheduler 定时任务相关知识介绍的非常详细,需要的朋友参考下
这篇文章主要介绍了python如何实现数组元素两两相加,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要为大家介绍了python人工智能tensorflow函数np.random模块使用方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块,下面这篇文章主要给大家介绍了关于python修改包导入时搜索路径的相关资料,需要的朋友可以参考下
这篇文章主要为大家详细介绍了python实现象棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008