Matplotlib 3d条形图

时间:2016-02-19 15:50:33

标签: python matplotlib

我试图在Matplotlib中为个人兴趣创建一个三维条形图。从我所看到的,它没有得到很好的支持,mayavi是首选路线,但我不确定我想要的是可以实现的。

Matplotlib plot

我上面的情节显然有一些地方提到的剪辑/渲染错误,我尝试使用zsort='max'修复它,但没有运气。

我的问题更加复杂。对于任何单独的酒吧,我们还需要根据从单独数据框架获得的某些标准来确定我们的位置是好的,处于危险中还是非常糟糕(绿色,红色,黄色)。

因此,例如,df是一个6x6数据框,其中包含我们想要绘制的值。我们有第二个数据框dft,其中包含判断我们是否绘制绿色,琥珀色或红色的条件。

我目前正在这样做:

greens[:]=np.NAN
ambers[:]=np.NAN
reds[:]=np.NAN
for loca in range(len(values)):
    x_idx=np.where(xlabels==names[loca].split(':')[0])[0][0]
    y_idx=np.where(ylabels==names[loca].split(':')[1])[0][0]

    if bank_share[loca]<=0.05:
        greens[x_idx][y_idx]=values[loca]
        greens[y_idx][x_idx]=values[loca]
    elif bank_share[loca]<=0.07:
        ambers[x_idx][y_idx]=values[loca]
        ambers[y_idx][x_idx]=values[loca]
    else:
        reds[x_idx][y_idx]=values[loca]
        reds[y_idx][x_idx]=values[loca]

zvalsg=greens.ravel()
zvalsa=ambers.ravel()
zvalsr=reds.ravel()
ax.bar3d(xposM.ravel(),yposM.ravel(), zvalsg*0, dx, dy, zvalsg, color='g', zsort='max')
ax.bar3d(xposM.ravel(),yposM.ravel(), zvalsa*0, dx, dy, zvalsa, color='y', zsort='max')
ax.bar3d(xposM.ravel(),yposM.ravel(), zvalsr*0, dx, dy, zvalsr, color='r', zsort='max')

有人可以建议我如何修复我的matplotlib图,或者我如何使用Mayavi来做它?从我见过的话来看,我对Mayavi的关注是能够像我在这里使用matplotlib一样拉长轴的嘀嗒声,以及我能够将多个地块叠加在一起吗?

非常感谢你!

0 个答案:

没有答案