2014-11-22 72 views
0

我使用matplotlib bar3d RdBu色彩地圖,並希望具有可變透明度之間的酒吧(所以較小的酒吧可以比較高的酒吧更透明)。Matplotlib bar3d變量阿爾法

這是製作3d條形圖的代碼。數據存儲在4×4矩陣'rho'中。目前alpha保持在0.95,但能夠控制每個柱的alpha值是非常好的。

乾杯

xpos = np.arange(0,4,1) 
ypos = np.arange(0,4,1) 
xpos, ypos = np.meshgrid(xpos, ypos) 
xpos = xpos.flatten() 
ypos = ypos.flatten() 
zpos = np.zeros(4*4) 
dx = 0.5 * np.ones_like(zpos) 
dy = dx.copy() 
dz = rho.flatten() 
nrm=mpl.colors.Normalize(-1,1) 
colors=cm.RdBu(nrm(-dz)) 
alpha = 0.95 
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, alpha=alpha, color=colors, linewidth=0) 

回答

2
xpos = np.arange(0,4,1) 
ypos = np.arange(0,4,1) 
xpos, ypos = np.meshgrid(xpos, ypos) 
xpos = xpos.flatten() 
ypos = ypos.flatten() 
zpos = np.zeros(4*4) 
rho = np.random.random((4,4)) 
dx = 0.5 * np.ones_like(zpos) 
dy = dx.copy() 
dz = rho.flatten() 
nrm=mpl.colors.Normalize(-1,1) 
colors=cm.RdBu(nrm(-dz)) 
alpha = np.linspace(0.2, 0.95, len(xpos), endpoint=True) 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
for i in range(len(xpos)): 
    ax.bar3d(xpos[i],ypos[i],zpos[i], dx[i], dy[i], dz[i], alpha=alpha[i], color=colors[i], linewidth=0) 
plt.show() 

enter image description here

+0

還可以給一個自定義的α值列表,α-= [0.1,0.2 .......],但它應當具有相同的長度as xpos – 2014-11-23 05:33:42

+0

這很棒,擁有alpha = abs(dz [i]/max(dz))給出了與高度成正比的alpha – 2014-11-24 22:45:10