爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1348|回复: 4

[源代码] cartopy画GMT边框风格的中国地图

[复制链接]

新浪微博达人勋

发表于 2024-1-4 22:32:47 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 灭火器 于 2024-1-4 22:32 编辑

模仿 GMT 或者说 M_Map 的黑白相间边框风格画中国地图。用到的自制包见 https://github.com/ZhaJiMan/frykit
原理很简单,就是找出刻度的位置,然后在刻度之间画黑白条条。不过目前只支持 PlateCarree 投影的地图,不知道怎么在兰伯特投影那种扇形图里整。

好羡慕隔壁 GMT 的出图效果啊
  1. '''
  2. time: 2024-01-04
  3. author: 灭火器
  4. data: https://www.naturalearthdata.com/downloads/50m-raster-data/50m-cross-blend-hypso/
  5. '''
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8. import cartopy.crs as ccrs
  9. import frykit.plot as fplt

  10. im = plt.imread('./HYP_50M_SR_W/HYP_50M_SR_W.tif')

  11. crs = ccrs.PlateCarree()
  12. fig = plt.figure()
  13. ax = fig.add_subplot(projection=crs)
  14. ax.imshow(im, extent=[-180, 180, -90, 90], transform=crs)
  15. fplt.add_cn_province(ax, lw=0.4)
  16. fplt.add_nine_line(ax, lw=0.4)
  17. fplt.set_extent_and_ticks(
  18.     ax=ax,
  19.     extents=[70, 140, 0, 60],
  20.     xticks=np.arange(-180, 181, 10),
  21.     yticks=np.arange(-90, 91, 10)
  22. )
  23. ax.tick_params(labelsize='small')

  24. fplt.gmt_style_frame(ax)
  25. fplt.add_compass(ax, 0.92, 0.88, size=20, style='circle')
  26. map_scale = fplt.add_map_scale(ax, 0.05, 0.1)
  27. map_scale.set_xticks([0, 500, 1000])
  28. map_scale.set_xticks([250, 750], minor=True)
  29. fplt.gmt_style_frame(map_scale, width=4)

  30. fig.savefig('./map.png', dpi=300, bbox_inches='tight')
复制代码
map.jpg

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

新浪微博达人勋

发表于 2024-1-5 10:13:34 | 显示全部楼层
确实还挺好看的你别说
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-5 10:26:03 | 显示全部楼层
灭火器大神又出牛作了,感谢大神分享。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-1-5 10:30:15 | 显示全部楼层
灭火器大神又出牛作了,感谢大神分享。
好像漏了个图例。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-1-5 12:38:03 | 显示全部楼层
独孤酒见 发表于 2024-1-5 10:30
灭火器大神又出牛作了,感谢大神分享。
好像漏了个图例。

首先我不是大神。图例的话,这个数据是Natural Earth上的浮雕地图,是个RGB数组,不是我用colormap和normalize映射出来的,所以没有colorbar之类的。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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