前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两种micaps站点数据的简单绘制方法

两种micaps站点数据的简单绘制方法

作者头像
用户11172986
发布2024-06-20 19:25:58
670
发布2024-06-20 19:25:58
举报
文章被收录于专栏:气python风雨气python风雨

相信大家刚接触到micaps数据是一头雾水,还好有对应的可视化库。

今天给大家演示两种micaps站点数据的快速绘制方法。

导入可视化库

代码语言:javascript
复制
import meteva.base as meb
import metpy.calc as mpcalc
import metpy.plots as mpplots
from metpy.units import units
from metpy.calc import reduce_point_density
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import BasicReader
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER

plt.rcParams['font.sans-serif'] = ['Source Han Sans CN'] 
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号    
Warning: ecCode

数据读取:micaps第三类数据

代码语言:javascript
复制
provinces = BasicReader('/home/mw/input/china1656/china_map/china_map/China_Province_2022.shp')
filename = "/home/mw/input/meteva2260/t.000"  # 替换为你的micaps文件路径
sta = meb.read_stadata_from_micaps3(filename)
sta.head()

level

time

dtime

id

lon

lat

data0

0

0

2022-09-04 17:00:00

0

56473

102.77

28.95

16.8

1

0

2022-09-04 17:00:00

0

56263

101.88

30.88

11.9

2

0

2022-09-04 17:00:00

0

56593

104.92

28.58

23.1

3

0

2022-09-04 17:00:00

0

56491

104.57

28.70

21.7

4

0

2022-09-04 17:00:00

0

56290

104.18

30.78

19.6

数据处理

代码语言:javascript
复制
# 读取经度、纬度、温度
lons = sta["lon"].values
lats = sta["lat"].values

方法一:使用metpy站点绘制

代码语言:javascript
复制
# 创建图形
fig = plt.figure(figsize=(15, 12))
ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE)
           
ax.set_extent( [110, 120, 20, 25])
           
# 创建站点图
stationplot = mpplots.StationPlot(ax, lons, lats, transform=ccrs.PlateCarree(),
                                  fontsize=10)
           
# 绘制温度分布
stationplot.plot_parameter('NW', temperature, formatter=lambda v: format(v, '.1f'))
           
ax.add_geometries(provinces.geometries(), linewidth=.5, edgecolor='black', crs=ccrs.PlateCarree(),
                  facecolor='none')
# gl = ax.gridlines(
#     draw_labels=True,
#     alpha=0.5,
#     linewidth=1,
#     color='k',
#     linestyle='--')
# gl.xlabels_top = False  # 关闭顶端标签    
# gl.ylabels_right = False  # 关闭右侧标签
# gl.xformatter = LONGITUDE_FORMATTER  # x轴设为经度格式
# gl.yformatter = LATITUDE_FORMATTER  # y轴设为纬度格式
           
plt.show()

方法二:使用meteva库内置函数绘制

代码语言:javascript
复制
map_extend = [110, 120, 20, 25]
axs = meb.creat_axs(
    1,
    map_extend,
    sup_title="2022年9月4日t2",
    add_index=[
        "a"],
    sup_fontsize=8)
image = meb.add_scatter_text(axs[0], sta, tag=0, font_size=8,cmap =meb.cmaps.temp_2m)

代码量上meteva库更适合新手练习。

有任何问题欢迎后台私信。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导入可视化库
  • 数据读取:micaps第三类数据
  • 数据处理
  • 方法一:使用metpy站点绘制
  • 方法二:使用meteva库内置函数绘制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档