1
我想繪製一個煙霧在北美地圖下的煙霧三維散點圖。 我試過各種方法,但似乎都有倒臺。 我此刻的代碼是:在Python中的底圖上的3D散點圖
fig = plt.figure(figsize=(22,4))
ax = Axes3D(fig)
M = Basemap(llcrnrlon=-140,llcrnrlat=10,urcrnrlon=-40,urcrnrlat=70,
projection='cyl', resolution ='c',area_thresh=100.)
ax.add_collection3d(M.drawcoastlines(linewidth=0.5))
ax.add_collection3d(M.drawcountries(linewidth=0.5))
ax.add_collection3d(M.drawparallels(np.arange(35,65,5),labels=[1,0,0,0]))
date = save_dir[-10:]
tau = tau_mod.int2tau(date)
dt = tau_mod.tau2time(tau)
q = ax.plot(max_x, max_y, max_z, c = 'black', lw = 3)
y,x=M(y,x)
p = ax.scatter(x,y,z,lw = 0,c = conc ,alpha = 0.75, s = 40,
norm=matplotlib.colors.LogNorm(),vmin = 20,
vmax = 4000, marker = ',',zorder=2)
ax.view_init(azim = a ,elev = e)
cb = fig.colorbar(p)
cb.set_label('CO [ppb]')
cmin , cmax = cb.get_clim()
ticks = np.linspace(cmin,cmax,10)
for t in range(len(ticks)):
ticks[t] = int("%i" % ticks[t])
cb.set_ticks(ticks)
cb.set_ticklabels(ticks)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.set_zlabel('Altitude [km]')
plt.show()
我得到的兩個主要問題是: 散點圖不會出現在地圖上 - 你可以看到它在遠處軸邊界之外。 drawparallels不起作用 - 它與此消息: 't = ax.text(xlab,yy [n],latlab,horizontalalignment ='right',verticalalignment ='center',** kwargs) TypeError: text()至少需要5個參數(給定4)'(我從來沒有在2D圖中使用這個命令有這個問題)。
我也嘗試使用ax.plot_surface繪製地圖的png圖像,但是會產生圖像順序的問題 - 無論使用什麼zorders,似乎都會在散點圖上繪製表面圖像。
任何幫助將不勝感激!