- 积分
- 26
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2023-4-15
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这是部分代码
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import cartopy.mpl.ticker as cticker
import cartopy.io.shapereader as shpreader
import xarray as xr
import numpy as np
from eofs.standard import Eof
f = xr.open_dataset(r'C:\Users\86130\swv\precip.mon.mean1.nc')
pre = np.array(f['precip'])
lat = f['lat']
lon = f['lon']
lat = np.array(lat)
coslat = np.cos(np.deg2rad(lat))
wgts = np.sqrt(coslat)[..., np.newaxis]
solver = Eof(pre, weights=wgts)
eof = solver.eofsAsCorrelation(neofs=3)
pc = solver.pcs(npcs=3, pcscaling=1)
var = solver.varianceFraction()
years = range(1991, 2020)
color1=[]
color2=[]
color3=[]
for i in range(1991,2020):
if pc[i-1991,0] >=0:
color1.append('red')
elif pc[i-1991,0] <0:
color1.append('blue')
if pc[i-1991,1] >=0:
color2.append('red')
elif pc[i-1991,1] <0:
color2.append('blue')
if pc[i-1991,2] >=0:
color3.append('red')
elif pc[i-1991,2] <0:
color3.append('blue')
fig = plt.figure(figsize=(15,15))
proj = ccrs.PlateCarree(central_longitude=115)
leftlon, rightlon, lowerlat, upperlat = (70,140,15,55)
lon_formatter = cticker.LongitudeFormatter()
lat_formatter = cticker.LatitudeFormatter()
。。。。。。。。。。。。
fig_ax4 = fig.add_axes([0.65, 0.808, 0.47, 0.285])
fig_ax4.set_title('(b) PC1',loc='left',fontsize = 15)
fig_ax4.set_ylim(-2.5,2.5)
fig_ax4.axhline(0,linestyle="--")
fig_ax4.bar(np.arange(1991,2020,1),pc[:,0],color=color1)
fig_ax5 = fig.add_axes([0.65, 0.458, 0.47, 0.285])
fig_ax5.set_title('(d) PC2',loc='left',fontsize = 15)
fig_ax5.set_ylim(-2.5,2.5)
fig_ax5.axhline(0,linestyle="--")
fig_ax5.bar(np.arange(1991,2020,1),pc[:,1],color=color2)
fig_ax6 = fig.add_axes([0.65, 0.108, 0.47, 0.285])
fig_ax6.set_title('(f) PC3',loc='left',fontsize = 15)
fig_ax6.set_ylim(-2.5,2.5)
fig_ax6.axhline(0,linestyle="--")
fig_ax6.bar(np.arange(1991,2020,1),pc[:,2],color=color3)
plt.show()
一直报错 shape mismatch: objects cannot be broadcast to a single shape. Mismatch is between arg 0 with shape (29,) and arg 1 with shape (531,).不知道怎么修改,请求大佬指点!
|
|