爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 灭火器

[经验总结] 配合 cartopy 使用的中国地图包:frykit

[复制链接]
发表于 2025-3-16 22:01:12 | 显示全部楼层
好啊,就是建议换个名字

后面用的人多了,大家都会好奇frykit是什么意思
总不能告诉别人,是炸鸡人的【炸鸡工具箱】哈哈哈
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-3-17 08:56:04 | 显示全部楼层
付亚男 发表于 2025-3-16 22:01
好啊,就是建议换个名字

后面用的人多了,大家都会好奇frykit是什么意思

被你发现了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-3-17 18:53:08 | 显示全部楼层
很不错,我记得天地图好像还给了审图号,这样大家写论文不愁审图号了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-3-18 10:39:45 | 显示全部楼层
感谢分享~~~~~~~~~~~~~
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2025-3-20 10:44:58 | 显示全部楼层
炸鸡老师好强大
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-3-20 10:57:26 | 显示全部楼层
灭火器大神这下应该把关于地图常用到的功能不但实现了,而且是便捷了。大神,在您的主贴中的效果图中怎么实现标注经纬度啊。这种lambert投影的标注我一致没能成功。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-3-20 17:24:58 | 显示全部楼层
独孤酒见 发表于 2025-3-20 10:57
灭火器大神这下应该把关于地图常用到的功能不但实现了,而且是便捷了。大神,在您的主贴中的效果图中怎么实 ...

GeoAxes.gridlines 就能标经纬度
https://scitools.org.uk/cartopy/ ... bels/gridliner.html
frykit 里的 set_map_ticks 函数也能,但很不完善,只能标注方形外框的地图。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-3-21 11:13:58 | 显示全部楼层
灭火器 发表于 2025-3-20 17:24
GeoAxes.gridlines 就能标经纬度
https://scitools.org.uk/cartopy/docs/latest/gallery/gridlines_and_ ...

感谢大神。我看到了你在网页上给的例子了。
https://zhajiman.github.io/post/frykit/
我准备尝试一下。里面的例子就是我想要的标注格式。
我现在经纬度的标注都标注在图里了,没标注在边框上。

感谢大神。不只是高人,还方便广大群众使用。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-8-9 10:01:14 | 显示全部楼层
感谢大神提供的工具!!想问问大神,我南海小图里contouf填色是没问题的,但是用quiver画风矢量不显示,想问问大神这边有使用该库包画小图的风矢量的例子吗{:eb302:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-11 08:58:03 | 显示全部楼层
本帖最后由 灭火器 于 2025-8-11 09:09 编辑
gdou_lyc 发表于 2025-8-9 10:01
感谢大神提供的工具!!想问问大神,我南海小图里contouf填色是没问题的,但是用quiver画风矢量不显示,想 ...
  1. from typing import cast

  2. import frykit.plot as fplt
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from cartopy.mpl.geoaxes import GeoAxes
  6. from scipy.ndimage import gaussian_filter

  7. # 读取数据
  8. data = fplt.load_test_data()
  9. X, Y = np.meshgrid(data.lon, data.lat)
  10. t2m = gaussian_filter(data.t2m - 273.15, sigma=1)
  11. u10 = gaussian_filter(data.u10, sigma=1)
  12. v10 = gaussian_filter(data.v10, sigma=1)

  13. # 设置投影
  14. map_crs = fplt.CN_AZIMUTHAL_EQUIDISTANT
  15. data_crs = fplt.PLATE_CARREE

  16. # 准备地图
  17. fig = plt.figure(figsize=(8, 5))
  18. main_ax = fig.add_subplot(projection=map_crs)
  19. mini_ax = fplt.add_mini_axes(main_ax)
  20. main_ax = cast(GeoAxes, main_ax)
  21. mini_ax = cast(GeoAxes, mini_ax)
  22. main_ax.set_extent((74, 136, 13, 57), crs=data_crs)
  23. mini_ax.set_extent((105, 122, 2, 25), crs=data_crs)
  24. for ax in [main_ax, mini_ax]:
  25.     fplt.add_cn_province(ax, lw=0.25)
  26.     fplt.add_cn_line(ax)

  27. # 绘制气温
  28. for i, ax in enumerate([main_ax, mini_ax]):
  29.     cf = ax.contourf(
  30.         X,
  31.         Y,
  32.         t2m,
  33.         levels=np.linspace(-10, 35, 10),
  34.         cmap="plasma",
  35.         extend="both",
  36.         transform=data_crs,
  37.         transform_first=True,
  38.     )
  39.     fplt.clip_by_cn_border(cf)
  40.     if i == 0:
  41.         fig.colorbar(cf, ax=ax, label="Temperature (℃)")

  42. # 用 stride 替代 regrid_shape
  43. stride = 6
  44. s = np.s_[::stride, ::stride]

  45. # 绘制风场
  46. # 用 inches 单位保证大图小图里的箭头大小相同
  47. quiver_kwargs = dict(
  48.     x=X[s],
  49.     y=Y[s],
  50.     u=u10[s],
  51.     v=v10[s],
  52.     scale=30,
  53.     scale_units="inches",
  54.     units="inches",
  55.     width=0.01,
  56.     headwidth=4,
  57.     transform=data_crs,
  58. )
  59. main_Q = main_ax.quiver(**quiver_kwargs)
  60. mini_Q = mini_ax.quiver(**quiver_kwargs)
  61. fplt.clip_by_cn_border(main_Q)
  62. fplt.clip_by_cn_border(mini_Q)
  63. fplt.add_quiver_legend(main_Q, U=10, height=0.12, loc="lower left")

  64. fplt.savefig("quiver.png")
  65. plt.close(fig)
复制代码

quiver.png

  1. matplotlib==3.10.5
  2. cartopy==0.25.0
  3. frykit==0.7.5.post1
复制代码

我这里画出来是正常的,就直接画
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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