QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2362|回复: 0
打印 上一主题 下一主题

python基于站点经纬度绘制降水空间散点分布图

[复制链接]
字体大小: 正常 放大

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-10-30 11:57 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
导入库并读取数据
​​import numpy as npimport pandas as pdimport cartopy.crs as ccrsimport cartopy.feature as cfeatureimport matplotlib.pyplot as pltfrom matplotlib import colors, cmimport cmapsimport geocat.viz as gvfrom cartopy.io.shapereader import Readerdata=pd.read_csv('20190722.csv',dtype=np.float64,header=None,delimiter=',',encoding='gbk')lat=np.array(data[1])lon=np.array(data[2])rain=np.array(data[3])

! t3 Y5 f0 \& t- K设置colorbar刻度及区间色调
scales = [0.1, 10, 25, 50, 75, 100]cmap = cmaps.rainbowboundaries = [0, 0.1, 10, 25, 50, 75, 100, 150]norm = colors.BoundaryNorm(boundaries, cmap.N)mappable = cm.ScalarMappable(norm=norm, cmap=cmap)
- }( t* `) t8 {. b* S1 H
设置散点标记的颜色区间
marker_colors = mappable.to_rgba(boundaries)sizes = np.geomspace(10, 250, len(boundaries))plt.figure(figsize=(9, 6))projection = ccrs.PlateCarree()ax = plt.axes(projection=projection)ax.set_extent([97, 109, 26, 34], crs=projection)
* }# b: A( ~3 W. y! X3 ^
添加四川地图
shap=Reader('SCmap.shp').geometries()sichuan = cfeature.ShapelyFeature(shap,crs=ccrs.PlateCarree(),edgecolor='k', facecolor='none')ax.add_feature(sichuan)
8 {  f, q% ]5 w+ O% p3 u# A
设置x、y轴经纬度刻度
​gv.set_axes_limits_and_ticks(ax,xticks=np.linspace(97, 109, 5),yticks=np.linspace(26, 34, 5))gv.add_lat_lon_ticklabels(ax)gv.add_major_minor_ticks(ax,x_minor_per_major=1,y_minor_per_major=1,labelsize=12)# Remove ticks on the top and right sides of the plotax.tick_params(axis='both', which='both', top=False, right=False)

: V6 C" S" l+ Y" x4 u% c+ l1 \7 v
( K# ~& [$ O  Y' A$ r+ z4 S. P5 o绘制不同降水区间散点图
masked_lon = np.where(rain < scales[0], lon, np.nan)masked_lat = np.where(rain < scales[0], lat, np.nan)plt.scatter(masked_lon,masked_lat,s=sizes[0],color=marker_colors[0],zorder=1)for x in range(1, len(scales)):    masked_lon = np.where(rain >= scales[x - 1], lon, np.nan)    masked_lon = np.where(rain < scales[x], masked_lon, np.nan)    masked_lat = np.where(rain >= scales[x - 1], lat, np.nan)    masked_lat = np.where(rain < scales[x], masked_lat, np.nan)    plt.scatter(masked_lon,masked_lat,s=sizes[x],color=marker_colors[x],zorder=1)masked_lon = np.where(rain >= scales[-1], lon, np.nan)masked_lat = np.where(rain >= scales[-1], lat, np.nan)plt.scatter(masked_lon,masked_lat,s=sizes[-1],color=marker_colors[-1],zorder=1)
7 x0 S/ C& M# f; [/ ^' U2 a% z
考标记出某一站点
​plt.colorbar(mappable=mappable,ax=ax,orientation='horizontal',label='Rainfall Amount(mm)',             drawedges=True,format='%.2f',ticks=scales)plt.scatter(103.12,30.08,s=20)plt.annotate(r'$mingshan$', xy=(103.12,30.08),xytext=(4,-100),xycoords='data',textcoords='offset points',             fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3'))plt.savefig('test.png')
5 Q- c* a  x. T- o( J' e9 d& N$ ~) S2 B3 @  Q1 E2 l+ ?

733ac825ly1hjd53re5hij20js0b43zu.jpg (120.88 KB, 下载次数: 223)

733ac825ly1hjd53re5hij20js0b43zu.jpg

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-16 18:37 , Processed in 0.417478 second(s), 54 queries .

回顶部