2014-11-22 34 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