最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python繪制多種風(fēng)玫瑰圖

 更新時(shí)間:2022年05月08日 10:04:14   作者:螞蟻ailing  
這篇文章主要介紹了利用Python繪制多種風(fēng)玫瑰圖,風(fēng)玫瑰是由氣象學(xué)家用于給出如何風(fēng)速和風(fēng)向在特定位置通常分布的簡(jiǎn)明視圖的圖形工具,下文繪制實(shí)現(xiàn)詳情,需要的小伙伴可以參考一下

前言

風(fēng)玫瑰是由氣象學(xué)家用于給出如何風(fēng)速和風(fēng)向在特定位置通常分布的簡(jiǎn)明視圖的圖形工具。它也可以用來(lái)描述空氣質(zhì)量污染源。風(fēng)玫瑰工具使用Matplotlib作為后端。

安裝方式直接使用:

pip install windrose

導(dǎo)入模塊

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

讀取數(shù)據(jù)

df = pd.read_csv("./sample_wind_poitiers.csv", parse_dates=['Timestamp'])
df = df.set_index('Timestamp')

計(jì)算風(fēng)速的u、v分量

df['speed_x'] = df['speed'] * np.sin(df['direction'] * pi / 180.0)
df['speed_y'] = df['speed'] * np.cos(df['direction'] * pi / 180.0)

uv風(fēng)速散點(diǎn)圖(含透明度)

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])

風(fēng)玫瑰圖(多種形式)

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)

繪制特定月份風(fēng)玫瑰圖

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)

繪制風(fēng)速頻率直方圖

bins = np.arange(0,30+1,1)
bins = bins[1:]
plot_windrose(df, kind='pdf', bins=np.arange(0.01,30,1),normed=True)

在地圖上繪制風(fēng)玫瑰圖

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)

最后:

這樣繪制出來(lái)的風(fēng)玫瑰看起來(lái)還是很漂亮的,并且也能夠大大提高工作效率,對(duì)于那些科研人員是很有幫助的。代碼以及圖片效果就放在上面了。

相關(guān)文章

最新評(píng)論

济宁市| 阳朔县| 靖边县| 白朗县| 志丹县| 佛教| 婺源县| 清水河县| 揭东县| 深泽县| 辛集市| 民丰县| 海晏县| 电白县| 泰来县| 西吉县| 洞口县| 寿宁县| 淳安县| 青河县| 杭锦旗| 桐柏县| 文成县| 文昌市| 石狮市| 石棉县| 沧源| 静海县| 康乐县| 大厂| 香港| 正蓝旗| 安国市| 拜城县| 涡阳县| 宝丰县| 山阴县| 舒城县| 长武县| 唐海县| 丹阳市|