簡體   English   中英

Python底圖上的3D散點圖

[英]3D Scatter Plot on Basemap in Python

我正在嘗試在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()

我遇到的兩個主要問題是:散點圖未顯示在地圖上-您可以在軸邊界外的距離看到它。 並條不起作用-出現此消息:'t = ax.text(xlab,yy [n],latlab,horizo​​ntalalignment ='right',verticalalignment ='center',** kwargs)TypeError:text()至少需要5個參數(給定4個)'(我在2D圖中使用此命令從未遇到過此問題)。

我也嘗試過僅使用ax.plot_surface繪制地圖的png圖像,但這會產生圖像順序問題-無論我使用什么zorders,似乎都在散點圖中繪制表面圖像。

任何幫助都感激不盡!

看起來(至少部分地)您的散點函數中缺少latlon = True。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM