在 python 中更新 matplotlib 后,“QuadContourSet”对象的属性没有设置器错误

问题描述 投票:0回答:1

我编写并运行了一个 cod 来绘制 netcdf 文件。升级 pip 和使用的库后,我收到错误:“QuadContourSet”对象的属性没有设置器。 如果有人能帮助我解决这个错误,我将不胜感激 这是我的代码:

from netCDF4 import Dataset as NetCDFFile 
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.ticker as ticker 
from matplotlib.axis import Axis
fig = plt.figure(figsize=(10,9), constrained_layout=True ) 
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0 )
ax = fig.add_subplot(111)
nc1 = NetCDFFile('C:/Users/Hadish/Desktop/project/shLa1850.nc')
lat = nc1.variables['lat'][:]
lon = nc1.variables['lon'][:]
sh = nc1.variables['shum'][:]
nc2 = NetCDFFile('C:/Users/Hadish/Desktop/project/omegaLa1500.nc')
lat = nc2.variables['lat'][:]
lon = nc2.variables['lon'][:]
omega = nc2.variables['omega'][:]*1000
map=Basemap(projection='merc',llcrnrlon=0.,llcrnrlat=10.,urcrnrlon=80.,urcrnrlat=45.
,resolution='i' ,suppress_ticks=False)  
lat_ticks=np.arange(np.ceil(15.0),int(45.0),5)
lon_ticks=np.arange(np.ceil(40.0),int(70.0),5)
lon_ticks_proj, _=map(lon_ticks, np.zeros(len(lon_ticks)))
_, lat_ticks_proj=map(np.zeros(len(lat_ticks)), lat_ticks)
ax.set_xticks(lon_ticks_proj)
ax.set_yticks(lat_ticks_proj)
plt.tick_params(labelleft=False, labelbottom=False , axis='both',which='major')
map.drawcoastlines()
map.drawstates()
map.drawcountries()
map.drawlsmask(land_color='Linen', ocean_color='#CCFFFF')
map.drawcounties() 
map.drawparallels(lat_ticks,labels=[1,0,0,0],fontsize=10 , dashes=(0,1),
fontweight='bold' ,fontstyle='oblique')
map.drawmeridians(lon_ticks,labels=[0,0,0,1],fontsize=10, dashes=(0,1) , 
fontweight='bold',  fontstyle='oblique')
lons,lats= np.meshgrid(lon-180,lat)
x,y = map(lons,lats)
clevs1 = np.arange(-6,6,1)
plt.title('SH')
cs1 = map.contourf(x,y,sh[0,:,:],clevs1,cmap='RdBu')
cb = map.colorbar(cs1,"bottom", size="4%", pad="5%")
cb.set_label('SH*10000')
clevs2 = np.arange(-10,10,2)
cs2 = map.contour(x,y,omega[0,:,:],clevs2,colors='blue',linewidths=1.)
plt.clabel(cs2, fontsize=9, inline=1) 
plt.savefig('sh-omega.png')
plt.show()

升级 pip 和使用的库后,我收到错误:“QuadContourSet”对象的属性没有设置器。 如果有人能帮助我修复这个错误,我将不胜感激

python matplotlib matplotlib-basemap
1个回答
0
投票

在 OP 时,

basemap
1.3.9 将
matplotlib
的上部引脚明确设置为
<3.8
。这里遇到的问题是由
matplotlib
中的界面更改引起的,而
basemap
尚未准备好。

basemap
1.4.0 今天(2024-01-09)刚刚发布,
matplotlib
引脚升级为
<3.9
并解决了您的问题:

python -m pip install "basemap >= 1.4.0"

我要感谢@RuthC 在相应的 GitHub 存储库中提供解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.