Matplotlib/Cartopy:set_ticks() 需要 2 个位置参数,但给出了 3 个

问题描述

我正在通过 xarray、matplotlib 和 cartopy 在地图上绘制基本数据图。我的问题来自简单地尝试将 x 和 y 轴刻度更改为相应的纬度/经度值。

问题是由于尝试应用 set_yaxis 而引起的,它位于下面示例代码片段的最后 3 行中。

错误返回:

回溯(最近一次调用最后一次): 文件“work_with_grib_data.py”,第 163 行,在 ax.set_yticks(np.arange(-90,91,30))

文件“/home/fewx/anaconda3/lib/python3.8/site-packages/cartopy/mpl/geoaxes.py”,第 829 行,在 set_yticks 中 return super(GeoAxes,self).set_yticks(yticks,minor)

文件“/home/fewx/anaconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py”,第 73 行,在包装器中 返回 get_method(self)(*args,**kwargs)

TypeError: set_ticks() 需要 2 个位置参数,但给出了 3 个

我知道第一个元素是“self”,但是 matplotlib 是如何在这里看到第三个元素的?这一定是一个简单的错误,但我忽略了什么?

血腥细节:python3.8、Matplotlib 3.4、cartopy 0.17

感谢您的帮助!

基本代码

# Keep only repetated elements
repeatedExams = [i for i in exams if exams.count(i)>1] 
# Remove duplicates of repeated elements       
repeatedExams = set(repeatedExams)

更新 我已经围绕这个问题进行了设计,使用 cartopy 的网格线功能,只是不绘制网格线。请参阅下面的代码

我想知道我的 Matplotlib (3.4) 和 cartopy (0.17) 是否应该归咎于此,并造成一些摩擦。尝试将 cartopy 升级到 (0.19) 会导致 Conda 中可怕的“冻结求解”,所以也许我会尝试将 Matplotlib 降级一个版本,看看这是否能解决 set_yaxis 滴答问题。

        #!/home/fewx/anaconda3/bin/python3.8

        import matplotlib.pyplot as plt
        import xarray as xr 
        import numpy as np
        import pygrib
        import cartopy.crs as ccrs
        import cartopy.feature as cfeat
        from cartopy.io.shapereader import Reader
        from cartopy.feature import ShapelyFeature 
        import cartopy
        import geopandas as gpd

        ds= xr.open_dataset('/fewxops/Tom/learn_python/data/grib2/gfs.t00z.pgrb2.0p25.f024',engine='cfgrib',filter_by_keys={'typeOfLevel': 'isobaricInhPa'})
        ds_z500=ds.sel(isobaricInhPa=500)

        fig,ax = plt.subplots(figsize=(10,10))
        ax = plt.axes(projection=ccrs.PlateCarree())

        ax.contourf(ds_z500['longitude'],ds_z500['latitude'],ds_z500['t'],transform=ccrs.PlateCarree())

        ax.add_feature(cfeat.COASTLINE.with_scale('50m'),edgecolor='black')
        ax.add_feature(cfeat.LAKES.with_scale('50m'),edgecolor='black',facecolor='none')
        ax.add_feature(cfeat.BORDERS.with_scale('50m'),edgecolor='black')

        ##Add ticks for latitude
        ax.set_yticks(np.arange(-90,30))
        
        ************************************************
        Traceback (most recent call last):
        File "work_with_grib_data.py",line 163,in <module>
        ax.set_yticks(np.arange(-90,30))
        File "/home/fewx/anaconda3/lib/python3.8/site-packages/cartopy/mpl/geoaxes.py",line 829,in set_yticks
        return super(GeoAxes,minor)
        File "/home/fewx/anaconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py",line 73,in wrapper
        return get_method(self)(*args,**kwargs)
        TypeError: set_ticks() takes 2 positional arguments but 3 were given

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...