Python读取NC数据画风场和急流区

Python读取NC数据画风场和急流区
作者今天不想说话,注意点都在代码注释里了,各位看官凑活看哈。
在这里插入图片描述

#知识点   1.多图共用一个色标
#         2.四张一样的图做循环,不用一张一张画

#共用色标的原理,其实就是多加一个子图,把色标放子图里,然后调整一下位置就好了


#循环的原理就是建立四个子图,同样沟通步骤循环四遍
#因为四张图是一摸一样的,只有数据不同,所以通过循环4次直接产生四张图




#处理数据的包
import xarray as xr
import numpy as np
#画图的包
import matplotlib.pyplot as plt
#地图的包
import cartopy.crs as ccrs
import my_class





#打开nc文件
#这些都是只需要执行一次的东西
ds = xr.open_dataset('download_201309.nc')
lat = ds.latitude
lon = ds.longitude
time = ds.time
u = ds['u']
v = ds['v']
lat_range = lat[(lat>=22) & (lat<=44)]
lon_range = lon[(lon>=102) & (lon<=135)]
fig = plt.figure(figsize=(18,9))

#设置4个子图,并且放到列表里面,方便循环的时候用
plt.subplots_adjust(left=0.07, right=0.90, top=0.95, bottom=0.05,wspace=0.0009,hspace=0.1)
ax_a = fig.add_subplot(2,2,1,projection = ccrs.PlateCarree())
ax_b = fig.add_subplot(2,2,2,projection = ccrs.PlateCarree())
ax_c = fig.add_subplot(2,2,3,projection = ccrs.PlateCarree())
ax_d = fig.add_subplot(2,2,4,projection = ccrs.PlateCarree())

ax_list = [ax_a,ax_b,ax_c,ax_d]
abcd = ['(a)','(b)','(c)','(d)']#图右上角的abcd
i = 0#循环变量




#开始循环,以时间为循环的变量,i作为辅助
for time_i in time:
    #取数据
    u_region = u.sel(longitude=lon_range, latitude=lat_range,time = time_i)
    v_region = v.sel(longitude=lon_range, latitude=lat_range,time = time_i)
    #算风速
    wind_speed = np.sqrt(u_region * u_region + v_region * v_region)
    #清洗风速,小于24的都置零
    e = (wind_speed > 23)
    wind_speed_region = np.where(e,wind_speed,0)


    #i的作用来了,利用i得到相应的子图
    ax_list[i].set_xticks(np.arange(102,136,3),crs=ccrs.PlateCarree())
    ax_list[i].set_yticks(np.arange(22,45,2),crs=ccrs.PlateCarree())
    xticks_str = ['102', '105', '108', '111', '114', '117', '120','123', '126', '129', '132', '135°E']
    ax_list[i].set_xticklabels(xticks_str,fontsize = 11)
    yticks_str = ['22   ','24    ','26    ','28    ','30    ','32    ','34    ','36    ','38    ','40    ','42    ','44°N']
    ax_list[i].set_yticklabels(yticks_str,fontsize = 11)
    my_class.readshapefile('bou2_4l.shp',linewidth=1,ax=ax_list[i])

    #填色
    #色标可以自己选择风格,也可以自定义,在之前的代码里面有
    cf_rh = ax_list[i].contourf(lon_range,lat_range ,wind_speed_region,cmap='hot_r',extend='both')

    #风杆
    ax_list[i].barbs(lon_range[::4],lat_range[::4],u_region[::4,::4],v_region[::4,::4],barbcolor=['k'],linewidth=0.5,length=5,barb_increments=dict(half=2, full=4, flag=20))

    #写abcd
    ax_list[i].text(0.05, 0.95, abcd[i],transform=ax_list[i].transAxes, fontsize=11)

    #一次循环结束 i+1
    i += 1




#色条额外添加一个子图,【左侧距离,下侧距离,宽度,高度】
position=fig.add_axes([0.90,0.3,0.01,0.4])
cb=fig.colorbar(cf_rh,cax=position,orientation='vertical')
font = {'family' : 'serif',#字体
        'color'  : 'k',#颜色
        'weight' : 'normal',#自己百度吧
        'size'   : 11,#字体大小
        }
cb.set_label('    m/s',rotation=360,fontdict=font)




plt.show()
  • 17
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
### 回答1: Python 作为一种流行的编程语言,具备强大的数据处理和可视化能力。Python 中有很多库可以用来读取并处理不同格式的数据,其中包括读取解析和画图 nc 文件的库。 要读取 nc 文件并进行可视化,需要使用 NetCDF4-Python 库。这个库是用于操作和分析 NetCDF 文件的工具集,它提供了读取、写入、重塑和操作 NetCDF 文件的功能。 首先,需要安装 NetCDF4-Python 库,可以使用 pip install netcdf4 命令进行安装。安装完成后,可以导入 NetCDF4-Python 库并使用其中的函数读取和操作 nc 文件。 例如,可以使用库中的 Dataset 类来打开并读取 nc 文件中的数据。可以使用 .variables 属性获得所有变量,并根据变量的名称获取相应的值。 接下来,可以使用 Matplotlib 库中的函数进行数据可视化。Matplotlib 是一个用于绘制二维图像的 Python 库,它提供了丰富的绘图函数,可以用于绘制各种类型的图表。 可以使用 Matplotlib 的 plot 函数绘制折线图、scatter 函数绘制散点图、contour 函数绘制等高线,等等。根据所需的图表类型和数据,选择适当的函数进行绘图。 绘图之后,可以使用 Matplotlib 的 show 函数来显示绘制的图像,并可以选择保存图像为图片文件。 通过以上步骤,我们可以利用 Python 读取 nc 数据并根据需要进行数据可视化。这样可以更好地理解和分析数据,从中发现规律,并为后续的数据处理工作提供依据。 ### 回答2: Python是一种简单而强大的编程语言,可以读取和处理各种数据集,包括nc(NetCDF)数据格式。对于读取和绘制nc数据,我们可以使用Python的xarray和matplotlib库。 首先,我们需要安装所需的库。可以通过运行以下命令在终端(或命令提示符)中安装所需的库: ``` pip install netCDF4 xarray matplotlib ``` 接下来,我们可以使用xarray库来读取nc数据集。例如,假设我们有一个名为“data.nc”的文件,其中包含了某个地的温度数据。我们可以使用以下代码读取并打印数据集的信息: ```python import xarray as xr data = xr.open_dataset('data.nc') print(data) ``` 读取后,我们可以查看数据集的维度、变量和其他属性。根据数据集的结构,选择我们感兴趣的变量和维度。 接下来,我们可以使用matplotlib库来绘制数据。例如,假设我们选择“temperature”变量和“time”和“latitude”维度来绘制数据。我们可以使用以下代码来绘制一个简单的温度时间序列图: ```python import matplotlib.pyplot as plt temperature = data['temperature'] # 如果是3D数据,可以指定某个特定经度(longitude)或纬度(latitude) # temperature = data['temperature'].sel(longitude=10, latitude=20) plt.plot(temperature) plt.xlabel('Time') plt.ylabel('Temperature') plt.title('Temperature Time Series') plt.show() ``` 这样,我们就可以读取nc数据集并绘制相应的图形了。当然,根据数据集的结构和需要,我们可以进行更复杂的数据操作和绘图。 ### 回答3: Python 是一种强大的编程语言,它提供了许多库和模块,使我们能够轻松地读取、处理和可视化数据。要使用 Python 读取 nc(NetCDF)格式的数据并绘制图形,我们需要使用 `xarray` 和 `matplotlib` 这两个常用的库。 首先,我们需要在 Python 中安装 `xarray` 和 `matplotlib`。可以使用 `pip` 命令来安装它们: ```python pip install xarray pip install matplotlib ``` 接下来,我们需要导入这两个库: ```python import xarray as xr import matplotlib.pyplot as plt ``` 然后,我们可以使用 `open_dataset` 函数来读取 nc 数据集: ```python data = xr.open_dataset('path_to_your_nc_file.nc') ``` 请确保将 `path_to_your_nc_file.nc` 替换为您实际的 nc 文件路径。 一旦数据集被读取,我们就可以使用 `plot` 函数来绘制图形了。比如,如果我们想要绘制数据集的第一个变量,可以这样做: ```python data.to_dataframe().plot() plt.show() ``` `to_dataframe()` 函数将 `xarray` 数据集转换为 `pandas` 的数据帧,使我们能够使用 `plot` 函数绘制图形。最后,使用 `show` 函数来显示图形。 以上就是使用 Python 读取 nc 数据并绘制图形的简要步骤。当然,根据具体的数据集和需求,可能还需要进行一些数据处理和图形美化方面的操作。但是通过这个基本的流程,我们已经可以开始读取和可视化 nc 数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野生的气象小流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值