用Python怎样绘制风玫瑰图,代码是什么
Admin 2022-09-03 群英技术资讯 736 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
二进制 0b101 以数字0和字母b打头的表示二进制数 如果出现大于等于2的数 会抛出SyntaxError异常 八进制 0711 以数字0打头的数字表示八进制数 如果出现大于等于8的数 会抛出
这篇文章主要介绍了python重复值处理得方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚至超越人类玩家的水准,本文就带领大家了解一下这个算法,快来跟随小编学习一下
Python基础-字符串,元组,数组,字典-公共方法
这篇文章主要介绍了python垃圾回收机制原理,python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略,有需要的的朋友可以借鉴参考想
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008