请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4806|回复: 11

[源代码] Python绘图:绘制地形图

[复制链接]

新浪微博达人勋

发表于 2023-3-17 14:23:25 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 jack_ln 于 2023-3-17 14:26 编辑

1、Python绘图:使用Basemap绘制全球地形图_菩提有树的博客-CSDN博客

                               
登录/注册后可看大图



2、Python绘制中南半岛与中国南海DEM地形图 (qq.com)
参考了文章1中的地形配色,综合以上链接,代码如下。
  1. # -*- encoding: utf-8 -*-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import cartopy.crs as ccrs
  5. import cartopy.feature as cfeature
  6. import cartopy.mpl.ticker as cticker
  7. import xarray as xr
  8. from matplotlib import rcParams
  9. from cartopy.io.shapereader import Reader

  10. config = {"font.family":'Times New Roman',"font.size": 12,"mathtext.fontset":'stix'}
  11. rcParams.update(config)
  12. filename=r'ETOPO2v2c_f4.nc'
  13. proj=ccrs.PlateCarree()
  14. #########设置投影及经纬度范围#####################################################
  15. extent = [70, 140, 10, 60]
  16. lonmin, lonmax, latmin, latmax = extent
  17. fig = plt.figure(figsize=(9, 8),dpi=300)
  18. ax = fig.add_axes([0.1, 0.1, 0.8, 0.6], projection=ccrs.PlateCarree())
  19. ax.set_extent(extent, crs=ccrs.PlateCarree())
  20. ax.set_xticks(np.arange(lonmin,lonmax+10,10), crs=ccrs.PlateCarree())
  21. ax.set_yticks(np.arange(latmin,latmax+5,5), crs=ccrs.PlateCarree())
  22. lon_formatter = cticker.LongitudeFormatter()
  23. lat_formatter = cticker.LatitudeFormatter()
  24. ax.xaxis.set_major_formatter(lon_formatter)
  25. ax.yaxis.set_major_formatter(lat_formatter)
  26. ##########读取.NC格式的高程数据##################################################
  27. f=xr.open_dataset(filename)
  28. lon=f['x'][:]
  29. lat=f['y'][:]
  30. height=f['z'][:]

  31. levels = [-8000, -6000, -4000, -2000, -1000, -200, -50, 0, 50, 200, 500, 1000, 1500, 2000, 3000, 4000,
  32.         5000, 6000, 7000, 8000]  # 创建分级
  33. color = ['#084594', '#2171b5', '#4292c6', '#6baed6', '#9ecae1', '#c6dbef', '#deebf7', '#006837',
  34.         '#31a354', '#78c679', '#addd8e', '#d9f0a3', '#f7fcb9', '#c9bc87', '#a69165', '#856b49',
  35.         '#664830', '#ad9591', '#d7ccca']  # 设置色带

  36. cf=ax.contourf(lon,lat,height,levels=levels,colors=color,extend='neither')
  37. font3={'family':'SimHei','size':12,'color':'k'}
  38. ax.add_feature(cfeature.OCEAN)
  39. ##########设置colorbar属性######################################################
  40. position=fig.add_axes([0.91, 0.12, 0.025,0.46])
  41. cb=fig.colorbar(cf,cax=position)
  42. ax_1=cb.ax
  43. ax_1.set_title('海拔',fontdict=font3)
  44. ax_1.tick_params(which='major',direction='in',labelsize=10,length=3.5)
  45. ################加载shp文件######################################################
  46. ax.add_feature(cfeature.LAKES.with_scale('50m'))
  47. ax.add_geometries(Reader(r'country1.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1)
  48. ax.add_geometries(Reader(r'province.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1)
  49. plt.savefig('china.png',dpi=300,bbox_inches='tight',pad_inches=0)
复制代码

                               
登录/注册后可看大图




密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2023-3-27 13:41:38 | 显示全部楼层
guoyumin 发表于 2023-3-23 09:09
你好 这个数据可以共享下吗filename=r'ETOPO2v2c_f4.nc'

ETOPO2v2c_f4.nc下载地址:https://www.ngdc.noaa.gov/mgg/gl ... O2v2c_f4_netCDF.zip
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2023-3-17 16:14:31 | 显示全部楼层
学习了,好看!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-3-17 20:22:54 | 显示全部楼层
好看!赞一个~~~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-3-18 13:06:28 | 显示全部楼层
这个好!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-3-20 08:46:41 | 显示全部楼层
这配色配的是真的好看
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-3-20 11:15:12 | 显示全部楼层
不错
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-3-21 14:21:58 | 显示全部楼层
好看{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-3-23 09:09:03 | 显示全部楼层
你好 这个数据可以共享下吗filename=r'ETOPO2v2c_f4.nc'
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-10 16:44:12 | 显示全部楼层
好看!博主太牛啦!感谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表