python 根据经纬度绘制点图 极投影

参考了python cartopy手动导入地图数据绘制底图/python地图上绘制散点图:Downloading:warnings/散点图添加图里标签_python add_feature-CSDN博客

点的颜色按照时间显示

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 13 11:32:48 2023

"""

import numpy as np
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import cartopy.feature as cfeature
import matplotlib.ticker as mticker
import matplotlib.path as mpath
import pandas as pd
from matplotlib.dates import date2num, DateFormatter
import matplotlib.dates as mdates

from matplotlib.colors import Normalize

# 转换时间格式r'C:\Users\Desktop\csv\all_files1min_nan.csv'
df = pd.read_csv(r'C:\Users\Desktop\csv\all_files_nan.csv')

df['time'] = pd.to_datetime(df['time'])

# 设置时间列为索引
df.set_index('time', inplace=True)

# 按小时计算平均值
df = df.resample('H').mean()

# 取消索引
df = df.reset_index()
df.dropna(axis=0, inplace=True)

fig = plt.figure(figsize=(12, 10),dpi=300)
proj =ccrs.NorthPolarStereo(central_longitude=0)#设置地图投影
#在圆柱投影中proj = ccrs.PlateCarree(central_longitude=xx)
leftlon, rightlon, lowerlat, upperlat = (-180,180,75,90)#经纬度范围

img_extent = [leftlon, rightlon, lowerlat, upperlat]

f1_ax1 = fig.add_axes([0.2, 0.3, 0.5, 0.5],projection = ccrs.NorthPolarStereo(central_longitude=0))#绘制地图位置

f1_ax1.set_extent(img_extent, ccrs.PlateCarree())
# f1_ax1.add_feature(cfeature.COASTLINE)
# f1_ax1.add_feature(cfeature.OCEAN)
# f1_ax1.add_feature(cfeature.LAND)
# 添加网格线和海岸线
# f1_ax1.gridlines(draw_labels=True)
f1_ax1.coastlines()
g1=f1_ax1.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linewidth=1, color='gray',linestyle='--')
g1.xlocator = mticker.FixedLocator(np.linspace(-180,180,13))
g1.ylocator = mticker.FixedLocator(np.linspace(60, 90,4))


theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.44
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)
f1_ax1.set_boundary(circle, transform=f1_ax1.transAxes)

# 绘制极投影图
# plt.figure(figsize=(8, 8))

# 遍历DataFrame的行
for index, row in df.iterrows():
    # 将时间转换为数值
    time_value = date2num(row['time'])
    # 绘制散点,颜色按时间
    sc=f1_ax1.scatter(row['lon'], row['lat'], c=time_value, cmap='viridis', s=10,vmin=date2num(df['time']).min(), vmax=date2num(df['time']).max(),transform=ccrs.Geodetic())

# 添加colorbar
# 添加colorbar
cbar = plt.colorbar(sc, label='Date and Time')
# 将colorbar上的标签显示为日期和时间
date_format = mdates.DateFormatter('%b %d %Y') 
# %H:%M:%S
cbar.ax.yaxis.set_major_formatter(date_format)
# cbar.set_ticklabels(df['time'])
# 自定义日期格式化器

plt.show()
相关推荐
码界奇点6 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
Laravel技术社区7 小时前
pytesseract 中英文 识别图片文字
python
生骨大头菜8 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我8 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
xqqxqxxq8 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
最晚的py8 小时前
Python抓取ZLibrary元数据
爬虫·python
咖啡续命又一天8 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
IT·小灰灰10 小时前
告别“翻墙“烦恼:DMXAPI让Gemini-3-pro-thinking调用快如闪电
网络·人工智能·python·深度学习·云计算
山海青风10 小时前
语音合成 - 用 Python 合成藏语三大方言语音
开发语言·python·音视频
mikejahn10 小时前
爬取CECS网站征求意见栏目的最新信息
python