爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11339|回复: 2

[求助] 【解决】cartopy 刻度不能显示右端的0度

[复制链接]

新浪微博达人勋

发表于 2019-6-1 12:12:11 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 sam_doggy 于 2019-6-3 12:27 编辑

  1. # ===================================================

  2. # ===================================================
  3. from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
  4. import cartopy.feature as cfeature
  5. import cartopy.crs as ccrs
  6. import matplotlib.pyplot as plt
  7. scale = '110m'
  8. fig = plt.figure(figsize=(8, 10))
  9. ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=180))
  10. ax.set_global()
  11. # ===================================================

  12. land = cfeature.NaturalEarthFeature('physical', 'land', scale, edgecolor='face',
  13.                                     facecolor=cfeature.COLORS['land'])
  14. ax.add_feature(land, facecolor='0.75')
  15. # ===================================================

  16. ax.coastlines(scale)
  17. # ===================================================

  18. ax.set_xticks([0, 60, 120, 180, 240, 300, 360], crs=ccrs.PlateCarree())
  19. ax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=ccrs.PlateCarree())

  20. lon_formatter = LongitudeFormatter(zero_direction_label=False)
  21. lat_formatter = LatitudeFormatter()
  22. ax.xaxis.set_major_formatter(lon_formatter)
  23. ax.yaxis.set_major_formatter(lat_formatter)

  24. gl = ax.gridlines()
复制代码

之前一直用basemap,刚准备转用cartoapy

我copy了@阿阿飞飞http://bbs.06climate.com/forum.p ... 3601&extra=page%3D1 中的代码,然而右端的0度没显示,进去看了geoaxes的源码,但是没找到问题....

刚刚进官网看示例也是没有右边的tick啊


有替代的解决方法如下:
https://stackoverflow.com/questi ... ertab=votes#tab-top

  1. [0, 60, 120, 180, 240, 300, 359.9999999999]
复制代码


为什么阿飞的帖子里是ok 的我就不懂了



TIM截图20190601121137.jpg
TIM图片20190601121643.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-6-2 05:35:50 | 显示全部楼层
你可以试试gridliner()这个方法。Cartopy map gridlines and tick labels,https://scitools.org.uk/cartopy/ ... ridliner.xformatter
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import cartopy.crs as ccrs

from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER


ax = plt.axes(projection=ccrs.Mercator())
ax.coastlines()

gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
                  linewidth=2, color='gray', alpha=0.5, linestyle='--')
gl.xlabels_top = False
gl.ylabels_left = False
gl.xlines = False
gl.xlocator = mticker.FixedLocator([-180, -45, 0, 45, 180])
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style = {'size': 15, 'color': 'gray'}
gl.xlabel_style = {'color': 'red', 'weight': 'bold'}

plt.show()
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-6-2 12:12:14 | 显示全部楼层
edwardli 发表于 2019-6-2 05:35
你可以试试gridliner()这个方法。Cartopy map gridlines and tick labels,https://scitools.org.uk/cartop ...

我只有0在两边不显示,180在两边是显示的,我刚刚试了下这个方法,右边还是没有啊。这个应该是因为180有正负,0没有
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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