我正在使用matplotlib为数组绘制3D条形图.我需要给这些栏杆加上一种边框 colored颜色 .但是,边 colored颜色 将0.0值数据点着色为黑色.有没有办法不给这些数据点涂上 colored颜色 ?我try 在值为0.0时通过循环执行edgecolors=None.然而,这似乎无济于事.如果有任何帮助,我很感激.

我用来策划的 playbook ,

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
lx= len(r[0])            
ly= len(r[:,0])
xpos = np.arange(0,lx,1)    
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)
xpos = xpos.flatten()   
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)

cs = ['r', 'g', 'b', 'y', 'c'] * ly
edgecolor_store = []

dx = 0.5 * np.ones_like(zpos)
dy = 0 * np.ones_like(zpos)
#dz = zpos
dz = r.flatten()
for value in dz: 
    if value == 0.0:
        edgecolor_store.append('none')
    if value > 0.0:
        edgecolor_store.append('black')

 
mask_dz = dz == 0 # SO:60111736, 3d case
#print(dz)
ax.bar3d(xpos,ypos,zpos, dx, dy,dz,color=cs,zsort='average',alpha=0.5,edgecolors=edgecolor_store)

我使用的样本数据,

[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,   0. ,   0. ,   0. ],[  0. ,   0. ,  20.7,   0. ,   0. ],[  0.6,   0. ,   0.1,   0. ,   0.2],[  0. ,  24.8,   0. ,  46.7,   0. ],[  0. ,   0. ,  99.7,  17.1,  99.3],[  0. ,  12.8,  98.6,   0. ,   6.7],[  0.2,   0. ,   0. ,  12.6,   0. ]

我得到的输出曲线图是,

enter image description here

推荐答案

我觉得您已经try 了正确的解决方案:不绘制不需要的条形图.

你需要一个面具.顺便说一句,永远不要把浮点数和==比较.

mask = ~np.isclose(dz, 0.0)

然后,绘制由此掩码过滤的数据

ax.bar3d(xpos[mask],ypos[mask],zpos[mask], dx[mask], dy[mask],dz[mask],color=cs[:mask.sum()],zsort='average',alpha=0.5,edgecolors='black')

请注意,您不再需要edgecolor.而且我计算cs的方式(从太长的cs开始,然后截断到所需的确切大小)并不是最优的.

enter image description here

还请注意,剩下的4条黑线不是0,而是非常小的值(0.1,0.2,0.2和0.6).

Python相关问答推荐

为什么自定义pytree aux_data对于jnp.数组来说在.jit()之后跟踪,而对于np.数组来说则不是?

Asyncio与队列的多处理通信-仅运行一个协程

在Python中使用readline函数时如何向下行

使用decorator 自动继承父类

使用Python Great Expectations和python-oracledb

有没有方法可以修复删除了换码字符的无效的SON记录?

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

由于瓶颈,Python代码执行太慢-寻求性能优化

如果索引不存在,pandas系列将通过索引获取值,并填充值

优化在numpy数组中非零值周围创建缓冲区的函数的性能

如何在Python中使用io.BytesIO写入现有缓冲区?

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

如何在BeautifulSoup中链接Find()方法并处理无?

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

如果值发生变化,则列上的极性累积和

ThreadPoolExecutor和单个线程的超时

Pandas DataFrame中行之间的差异

Odoo 16使用NTFS使字段只读

计算天数