python 实现对于一组数据,分为几个bin,每个bin一种颜色,绘制空间分布图

简介: python 实现对于一组数据,分为几个bin,每个bin一种颜色,绘制空间分布图

首先,码上希望实现的成果样式:


4b4c555b4b4e42a8b98844b6c7027464.png


这里,我处理的数据是平流强度数据,具体的实现思路是:

1、将数据分为5个bin

2、找出每个数据点对应的经纬度坐标

3、对每组数据进行循环画图,每次画图采用不同的颜色


这里主要需要用到几个库,以及函数

1、读取nc文件的xarray库

2、实现绘图的 matplotlib库

3、实现地形投影的cartopy库

4、实现数组计算的numpy库

5、np.argwhere()函数:获取数组中数据对应的索引值


可以查看官网说明:np.argwhere()


下面贴上代码以及每一步的说明:


#导入相关的库
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import numpy as np
import xarray as xr
#读取数据
path='D:\\mse.nc'#数据的路径位置
dh=xr.open_dataset(path)#读取数据
lon=np.array(dh['lon'])#读取数据中的经度并转为array数组
lat=np.array(dh['lat'])#读取数据中的纬度并转为array数组
time=dh['time']#读取数据中的时间
time=time.loc['1982':'2012'][:]#选择数据的时间范围
lat_range = lat[(lat>-22.5) & (lat<22.5)]#选择数据的纬度范围
hadv_region =dh.sel(lon=lon, lat=lat_range,time=time).hadv#读取选取时间、经度范围内的数据
hadv =np.array(hadv_region.mean('time', skipna=True))#对数据进行平均处理
hadv_range=np.arange(-125,125+50,50)#随机生成一组数值用于筛选数据
hadv_bin=[]#生成一个空的list
fig=plt.figure(figsize=(20,12))#产生画板
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['font.sans-serif']=['Fangsong']#显示中文
ax=fig.add_subplot(111,projection=ccrs.PlateCarree(central_longitude=180))#设置投影以及投影的中心经度,创建一个画纸,创建子图
colors=['r','b','y','g','k']#定义五个bin的颜色
lab=['-100 MSE','-50 MSE','0 MSE','50 MSE','100 MSE']#定义五个bin的标签
# 循环挑选不同的bin ,每50为一个bin,并绘制散点图
for i in range(len(hadv_range)-1):
    idx=np.argwhere((hadv>hadv_range[i])&(hadv<hadv_range[i+1]))
    lonr=lon[idx[:,1]]
    latr=lat_range[idx[:,0]]
    ax.scatter(lonr,latr,marker='o',c=colors[i],\
            transform=ccrs.PlateCarree(central_longitude=180),label=lab[i])#绘制散点图
ax.legend(loc='upper right', bbox_to_anchor=(1, 1.7))#设置图例以及位置
ax.coastlines()#添加海岸线
ax.set_xticks(np.arange(0, 360+45, 45),crs=ccrs.PlateCarree(central_longitude=180))#设置x轴的经度范围
ax.set_yticks(np.arange(-20, 30, 10),crs=ccrs.PlateCarree())#设置y轴的纬度范围
#设置刻度格式为经纬度格式
ax.xaxis.set_major_formatter(LongitudeFormatter())#设置刻度格式
ax.yaxis.set_major_formatter(LatitudeFormatter())
ax.set_title('热带海域 MSE 空间水平分布图',fontsize=20)#添加标题
ax.set_xlabel('经度($°$)',fontsize=20)#添加x轴标签
ax.set_ylabel('纬度($°$)',fontsize=20)#添加y轴标签
ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', '50m', \
                                            edgecolor='black', facecolor='grey'))#添加陆地
# fig.savefig('D:\\picture\\'+'热带海域 MSE 空间水平分布图.tiff',format='tiff',dpi=150)#保存数据


结果如下,非常的surprise~,感兴趣的小伙伴赶快尝试吧


cdbaacaa1cd64c078522ec75be5f2b83.png


          一个努力学习python的海洋小白
                    水平有限,欢迎指正!!!
                    欢迎评论、收藏。


相关文章
|
1月前
|
JSON 算法 API
1688商品详情API实战:Python调用全流程与数据解析技巧
本文介绍了1688电商平台的商品详情API接口,助力电商从业者高效获取商品信息。接口可返回商品基础属性、价格体系、库存状态、图片描述及商家详情等多维度数据,支持全球化语言设置。通过Python示例代码展示了如何调用该接口,帮助用户快速上手,适用于选品分析、市场研究等场景。
|
2月前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
1月前
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
345 58
|
26天前
|
人工智能 数据可视化 Python
在Python中对数据点进行标签化
本文介绍了如何在Python中使用Matplotlib和Seaborn对数据点进行标签化,提升数据可视化的信息量与可读性。通过散点图示例,展示了添加数据点标签的具体方法。标签化在标识数据点、分类数据可视化及趋势分析中具有重要作用。文章强调了根据需求选择合适工具,并保持图表清晰美观的重要性。
51 15
|
19天前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
1月前
|
供应链 API 开发者
1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)
1688商品列表API是阿里巴巴开放平台提供的服务,允许开发者通过API获取1688平台的商品信息(标题、价格、销量等)。适用于电商选品、比价工具、供应链管理等场景。使用时需构造请求URL,携带参数(如q、start_price、end_price等),发送HTTP请求并解析返回的JSON/XML数据。示例代码展示了如何用Python调用该API获取商品列表。
113 18
|
2月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
124 4
|
2月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
2月前
|
数据采集 存储 JSON
用Python爬虫抓取数据并保存为JSON的完整指南
用Python爬虫抓取数据并保存为JSON的完整指南
|
2月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。

推荐镜像

更多