0.写在前面

本来想画含等温线+填色+标注站点降温的图的,但是因为要来的数据是文本文件,绘制等温图不是小白能干的过于麻烦,于是最后只画了地图+站点。

结果如图(save之后的png格式图片,python输出figure时南海部分在地图外)

1.用到的包

import matplotlib.pyplot as plt
import numpy as np
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import matplotlib.ticker as mticker
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import pandas as pd
from cartopy.io import shapereader as shpreader

包括matplotlib、numpy、cartopy、pandas。

使用conda下载包有三种格式(学艺不精,我经常混用,哪个能下就用哪个):

①.conda install 包  /  ②.pip install 包  /  ③.conda install -c conda-forge 包

2.数据

①excel格式的含站点经纬度温度的文件

②中国边界线(带省界和南海)的shp文件

3.代码

#读取数据pd.read_excel(excel格式的文件似乎不方便用contourf作图)
df = pd.read_excel(r"20200901 经纬温水.xlsx")
df.replace(999999, 0, inplace=True)
#上一步replace是把数据中的999999换成0
#999999表示该站点无此数据,因此做出的图白色的包括无站点和无数据两种情况
lat = df['Lat']
lon = df['Lon']
temps = df['TEM_Avg']# 建立画布
fig2 = plt.figure(figsize=(15, 15))
proj = ccrs.PlateCarree(central_longitude=105)
leftlon, rightlon, lowerlat, upperlat = (70, 140, 15, 55)
# 根据上下限确定范围,至少为10°# 绘制地图
f2_ax1 = fig2.add_axes([0.1, 0.1, 0.8, 0.4], projection=proj)
# 在画布的绝对坐标建立子图
f2_ax1.set_extent([leftlon, rightlon, lowerlat, upperlat],crs=ccrs.PlateCarree())# 海岸线,50m精度
f2_ax1.add_feature(cfeature.COASTLINE.with_scale('50m'))# 湖泊数据(但是这个貌似只画了比较大的湖泊,比如贝湖巴湖)
f2_ax1.add_feature(cfeature.LAKES, alpha=0.5) #alpha表示透明度# 以下6条语句是定义地理坐标标签格式
f2_ax1.set_xticks(np.arange(leftlon, rightlon+10, 10), crs=ccrs.PlateCarree())
#rightlon或是下面的upperlat应写大一个间隔,在这里就是+10
f2_ax1.set_yticks(np.arange(lowerlat, upperlat+10, 10), crs=ccrs.PlateCarree())
lon_formatter = LongitudeFormatter()
lat_formatter = LatitudeFormatter()
f2_ax1.xaxis.set_major_formatter(lon_formatter)
f2_ax1.yaxis.set_major_formatter(lat_formatter)
f2_ax1.set_title('20200901 China average temperature',loc='center', fontsize=15)#定义名称,名称含中文出图时为空格,尚未解决# 读取shp文件
china = shpreader.Reader(r"bou2_4l.dbf").geometries()# 绘制中国国界省界九段线等等
f2_ax1.add_geometries(china, ccrs.PlateCarree(),facecolor='none', edgecolor='black', zorder=1)# 添加南海,实际上就是新建一个子图覆盖在之前子图的右下角
f2_ax2 = fig2.add_axes([0.7575, 0.0935, 0.08, 0.13], projection=proj)
f2_ax2.set_extent([105, 125, 0, 25], crs=ccrs.PlateCarree())
f2_ax2.add_feature(cfeature.COASTLINE.with_scale('50m'))
china = shpreader.Reader(r"bou2_4l.dbf").geometries()
f2_ax2.add_geometries(china, ccrs.PlateCarree(),facecolor='none', edgecolor='black', zorder=1)#绘制站点,颜色表示温度,cmap是选择一种colorbar的格式
f1 = f2_ax1.scatter(lon, lat, s=2, c=temps, cmap='afmhot_r',transform=ccrs.PlateCarree())
f2 = f2_ax2.scatter(lon, lat, s=2, c=temps, cmap='afmhot_r',transform=ccrs.PlateCarree())#下面定义colorbar大小和位置
# colorbar 左 下 宽 高
l = 0.92
b = 0.1
w = 0.015
h = 0.4# 对应 l,b,w,h;设置colorbar位置;
rect = [l, b, w, h]
cbar_ax = fig2.add_axes(rect)
cb = plt.colorbar(f2, cax=cbar_ax)#图片保存
plt.savefig(r'average temperature.png', dpi=300) #dpi越大越清晰
#要先save在show,不然show出来的是空白图片
plt.show()

4.一些解释和参考

①dpi可以定义在创建画布那一步

②fig.add_axes参数可参考 add_axes()——python绘图_机尾云拉长的博客-CSDN博客_add_axes

③之前问师兄说应该可以用tricontourf画一个等温图,还没试,附一个官网的参考链接

Contour plot of irregularly spaced data — Matplotlib 3.5.2 documentation

④bou2_4l.dbf文件应与shp、shx格式文件在同一个文件夹,否则会报错

⑤cartopy中的投影格式可参考(一)Cartopy中的地图投影 - 气象学人 - 博客园

⑥catter基本介绍参考Python中scatter函数参数详解_幸运六叶草的博客-CSDN博客_python scatter参数详解

scatter函数中cmap(即colormap)参考官网color example code: colormaps_reference.py — Matplotlib 2.0.2 documentation

如果是统一的颜色,参考Python-画图(散点图scatter、保存savefig)及颜色大全_天才的汉堡叔叔的博客-CSDN博客_python散点图

⑦所有文件地址建议用完整地址

⑧本文主要参考滑动验证页面

设置colorbar参考(9条消息) matplotlib 合理设置colorbar和子图的对应关系_fangzuliang的博客-CSDN博客_matplotlib 子图colorbar

nc文件绘制等温线可以参考Python绘制气象实用地图(附代码和测试数据) | Climate2Weather

和Python气象绘图笔记(四)——填色与colorbar - 知乎 (zhihu.com)

5.文件分享(bou2_4l)

链接:https://pan.baidu.com/s/1C-lQdy9nVQ7bMMQ0ulRuCA?pwd=1014 
提取码:1014

ps.站点数据需要自己获取哦,或者向自己的学长学姐要数据。

本人能力有限,尚在学习过程中。若有错误,敬请指正。

python+气象 | 在地图背景下绘制全国站点气温分布图相关推荐

  1. python气象处理第三弹-绘制气象站点分布

    python气象处理第三弹-绘制气象站点分布 python气象处理第三弹-绘制气象站点分布 python气象处理第三弹-绘制气象站点分布 前言 一.下载并转换中国气象站点数据? 二.使用步骤 1.引入 ...

  2. 基于大数据背景下的全国各大城市地铁客流量分析

    目录 第一章 项目介绍 第二章 项目组织与项目计划 第三章 数据采集 3.1 数据采集目标 3.2 数据采集工具与方法 3.3 数据采集流程 3.4 数据采集保存 3.5 本章小结 第四章 数据预处理 ...

  3. 【应用】Python利用高德地图经纬度数据绘制定位

    [应用]Python利用高德地图经纬度数据绘制定位 一. 背景 二. 获取API 1. 注册高德开放平台个人开发者 2. 获取key 三. 具体步骤 1. 库的导入 2. 根据地址获取经纬度 3. 绘 ...

  4. python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

    exce表格中怎么制作中国地图背景数据气泡图 exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况,该怎么设置中国地图气泡图表呢?下面我们就来看看详 ...

  5. 计算机语言python课程名称,MOOC背景下的计算机语言课程的改革与发展——以Python语言为例...

    作 者:贵向泉[1] 王瑞鹏李立[1] 高祯谢鹏寿[1] 薛建彬[1] 张玺君[1] 马维俊[2] GUI Xiang-quan;WANG Rui-peng;LI Li;GAO Zhen;XIE Pe ...

  6. python作中国地图背景气泡图_Excel图表中制作中国地图背景气泡图的操作方法

    在一些商务PPT,经常能够看见以中国或世界地图作为背景的图表,并且使用气泡图反映数据的大小,如何实现这样的气泡图.今天,学习啦小编就教大家在Excel图表中制作中国地图为背景气泡图的操作方法. Exc ...

  7. python作中国地图背景气泡图_excel怎么制作中国地图背景效果的气泡图?

    在一些商务PPT,经常能够看见以中国或世界地图作为背景的图表,并且使用气泡图反映数据的大小,如下图所示.该怎使用excel制作气泡图效果呢?下面我们就来看看详细的教程. 软件名称:Microsoft ...

  8. 【Python气象绘图临摹】图像绘制(下):地理子图GeoAxes、xy轴设置、应用ncl色阶colormap、各标题、海岸线、添加文本、添加矩形框

    文章目录 前言 plt.fig.ax.三者绘制区别: GeoAxes地图投影:绘图投影和数据投影 x轴.y轴设置: 多个子图之间的间距调节: 图上添加文本.矩形框: python中ncl色阶color ...

  9. python作中国地图背景气泡图_Python数据可视化:香港地图、房价可视化,绘制气泡图...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于DataCharm ,作者宁海涛 前言 今天的推文教程使用geopandas进行空间 ...

最新文章

  1. 谷歌开源文本生成新方法 LaserTagger,直击 seq2seq 效率低、推理慢、控制差三大缺陷!
  2. 使用 kafka 提升你的订单接口吞吐量
  3. /home/appleyuchi主目录迁移到新磁盘中
  4. web开发常用工具介绍
  5. SpringMVC处理请求或响应数据
  6. exchange 2010 允许 relay设定
  7. 盛夏光年 - 江湖一剑客
  8. 揭开JS加密解密的神秘面纱(1)
  9. 为什么要使用微信活码?
  10. 首届 Rust China Hackathon Online 参赛队伍名单出炉
  11. 今天又接到了交通罚单
  12. 不是吧,还有人不会做圣诞节头像小程序(可开通流量主,赚零花钱)
  13. Java 反射操作(完全版)
  14. 艾粽飘香,空相古寺钟声扬
  15. 考研学校的爬虫(自己写的可能会有点菜
  16. MyEcplise_Maven搭建SSM框架
  17. 浙大概率第四版,证明正态分布随机变量不相关等价于独立
  18. mysql ora01031_as sysdba 出现ORA-01031: insufficient privileges 解决办法
  19. 408数据结构考研笔记——第五章树与二叉树(重点)
  20. css导航栏跟随,改良版 导航栏自动跟随(示例代码)

热门文章

  1. axure 学习及录播视频
  2. 安卓 TextView 七宗罪
  3. (一)白皮书、绿皮书、蓝皮书和黄皮书的区别
  4. 3dmax常用快捷键来了!!
  5. 摄影构图没有灵感?学习这些优秀案例,想不美都难!
  6. Windows 10系统下如何设置计划任务?
  7. CNN-tracking-文章导读
  8. 学好这五个PPT技巧,让你老板刮目相看
  9. 简述数学建模的过程_数学建模入门知识分享(一):什么是数模
  10. php如何实现上传照片功能_php如何实现图片上传功能