python读取excel数据、转换度分为度,绘制填色图

简介: python读取excel数据、转换度分为度,绘制填色图

python绘图记录



  • 读取excel文件
  • 将度分的经纬度转换为度
  • 绘制填色图
  • 两种添加网格线的方式


# -*- coding: utf-8 -*-
"""
Created on Mon Sep 19 10:32:00 2022
@author: Administrator
"""
import shapely.geometry as sgeom
import xarray as xr
import numpy  as np
import matplotlib.pyplot as plt
import glob
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import pandas as pd
import calendar
import os
import re
import matplotlib.ticker as mticker
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
path = r'D:/data_1.xlsx'
data = pd.read_excel(io=path,sheet_name='name')
lon = data['经度'].to_numpy()[1:]
lat = data['纬度'].to_numpy()[1:]
def convert_lon(lon):
    if len(lon)==1:
        a = float(lon[0:3])
        b = float(lon[4:-1])
        c = b/60
        d = a + c
    else:
        d = np.zeros(lon.shape)
        for i in range(len(lon)):
            a1 = float(lon[i][0:3])
            b1 = float(lon[i][4:-1])/60
            d[i] = a1 + b1
    return d
def convert_lat(lon):
    if len(lon)==1:
        a = float(lon[0:2])
        b = float(lon[3:-1])
        c = b/60
        d = a + c
    else:
        d = np.zeros(lon.shape)
        for i in range(len(lon)):
            a1 = float(lon[i][0:2])
            b1 = float(lon[i][3:-1])/60
            d[i] = a1 + b1
    return d
lon_new = convert_lon(lon)
lat_new = convert_lat(lat)
#### ======================================================================================
#### ===================================read_nc ==============================================
#### ======================================================================================
nc_path = r'D:/data2.nc'
ds = xr.open_dataset(nc_path)
depth = ds.bathymetry.sel(lat=slice(25,41),lon=slice(115,135))
depth_data =depth.data    
depth_data[depth_data ==-10] = np.nan
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
#### ======================================================================================
#### ===================================draw ==============================================
#### ======================================================================================
fig = plt.figure(figsize=(8, 6), dpi=200)  
proj = ccrs.PlateCarree()
ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
extents = [117.5,127,29.5,40.5]
ax.set_extent(extents, crs=proj)
# 添加各种特征
ax.add_feature(cfeature.LAND, edgecolor='black',facecolor='silver',
                # zorder=1,
               )
ax.add_feature(cfeature.LAKES, edgecolor='black',facecolor='w',
               # zorder=2
               )
ax.add_feature(cfeature.BORDERS)
# ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', '10m', \
#     edgecolor='k', facecolor='silver'))
# # 添加网格线
xtick = np.arange(118, 128, 2)
ytick = np.arange(30,41, 1)
# ax.coastlines()
tick_proj = ccrs.PlateCarree()
ax.set_xticks(xtick, crs=tick_proj)
ax.set_xticks(xtick,  crs=tick_proj)
ax.set_yticks(ytick, crs=tick_proj)
ax.set_yticks(ytick, crs=tick_proj)
ax.tick_params(which='major', direction='in', 
                length=3, width=0.4, 
                pad=0.2, bottom=True, left=True, right=False, top=False)
# # # # 利用Formatter格式化刻度标签
ax.xaxis.set_major_formatter(LongitudeFormatter())
ax.yaxis.set_major_formatter(LatitudeFormatter())
plt.yticks(fontproperties='Times New Roman',size=10)
plt.xticks(fontproperties='Times New Roman',size=10)
cmap=plt.get_cmap('RdYlBu')
ax.gridlines(linestyle='--',
             xlocs=xtick,
             ylocs=ytick,
              x_inline=False, 
              y_inline=False,
              zorder=2,
             linewidth=0.5, 
             color='grey')
step=2
cb =  ax.contourf(depth.lon,depth.lat,-depth_data,
            transform=ccrs.PlateCarree(),
            cmap=cmap,
            # levels=np.arange(0,120+step,step),
            levels=np.arange(-100,0+step,step),
            zorder=2,
            )
ac=ax.contour(-depth_data,colors='grey',
              levels=np.arange(-100,0,20),
           transform=ccrs.PlateCarree(),)
ax.clabel(ac)
ax.scatter(lon_new,lat_new,marker='s',s=10,
           #color='dimgray',
           color='dimgray',
            transform=ccrs.PlateCarree(),
            zorder=2,
            )
fig.colorbar(cb,
             # shrink=0.9,
              ticks=-np.array([0,10,20,30,40,50,60,70,80,90,100]),
              label='Depth(m)')
plt.show()
# gl = ax.gridlines(
#                   linestyle='--', draw_labels=False,
#                   )
# gl.xlabels_top = False
# gl.ylabels_left = True
# gl.ylabels_right=False
# gl.xlines = True
# gl.xlocator = mticker.FixedLocator([118,120,122,124,126])
# gl.ylocator = mticker.FixedLocator([30,31,32,33,34,35,36,37,38,39,40])
# gl.xformatter = LONGITUDE_FORMATTER
# gl.yformatter = LATITUDE_FORMATTER
# gl.xlabel_style = {'color': 'black', 'weight': 'bold'}


相关文章
|
27天前
|
机器学习/深度学习 新能源 调度
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
153 1
|
30天前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
19天前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
22天前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
71 0
|
4天前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
6天前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
1月前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
120 1
|
15天前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
2月前
|
数据采集 监控 调度
干货分享“用 多线程 爬取数据”:单线程 + 协程的效率反超 3 倍,这才是 Python 异步的正确打开方式
在 Python 爬虫中,多线程因 GIL 和切换开销效率低下,而协程通过用户态调度实现高并发,大幅提升爬取效率。本文详解协程原理、实战对比多线程性能,并提供最佳实践,助你掌握异步爬虫核心技术。
|
2月前
|
JSON 数据挖掘 API
闲鱼商品列表API响应数据python解析
闲鱼商品列表API(Goodfish.item_list)提供标准化数据接口,支持GET请求,返回商品标题、价格、图片、卖家信息等。适用于电商比价、数据分析,支持多语言调用,附Python示例代码,便于开发者快速集成。

推荐镜像

更多