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的海洋小白
                    水平有限,欢迎指正!!!
                    欢迎评论、收藏。


相关文章
|
8月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
6158 1
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
712 0
|
8月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
8月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
9月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
9月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
257 0
|
9月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
9月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
9月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
9月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。

推荐镜像

更多