gpt4 book ai didi

python - 在 matplotlib 中制作高度为 0 的透明色条

转载 作者:行者123 更新时间:2023-12-01 03:02:39 29 4
gpt4 key购买 nike

我有一个 3d 条形图,显示了两个 3 个区域的网络带宽。我想在 matplotlib 中使高度为 0 的条形透明。在我的输出中,它们得到的颜色形成一个高度为 0 的正方形。

我怎样才能做到这一点?

代码:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

data = np.array([
[1000,200],
[100,1000],
])

column_names = ['','Oregon','', 'Ohio','']
row_names = ['','Oregon','', 'Ohio']

fig = plt.figure()
ax = Axes3D(fig)

lx= len(data[0]) # Work out matrix dimensions
ly= len(data[:,0])

xpos = np.arange(0,lx,1) # Set up a mesh of positions
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)

xpos = xpos.flatten() # Convert positions to 1D array
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)

dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()

cs = ['r', 'g'] * ly

ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color=cs)

ax.w_xaxis.set_ticklabels(column_names)
ax.w_yaxis.set_ticklabels(row_names)
ax.set_zlabel('Mb/s')

plt.show()

最佳答案

有一个alpha您可以设置透明度的参数,这在 bar3d 的文档中有点隐藏因为它包含在 **kwargs 中可从 mpl_toolkits.mplot3d.art3d.Poly3DCollection 获得.

然而,还没有可能给出 alpha 的数组。每个单独条形的值,例如为 color key 。因此,您必须在例如蒙版的帮助下分别绘制透明和不透明的。

# needs to be an array for indexing
cs = np.array(['r', 'g', 'b'] * ly)

# Create mask: Find values of dz with value 0
mask = dz == 0

# Plot bars with dz == 0 with alpha
ax.bar3d(xpos[mask], ypos[mask], zpos[mask], dx[mask], dy[mask], dz[mask],
color=cs[mask], alpha=0.2)
# Plot other bars without alpha
ax.bar3d(xpos[~mask], ypos[~mask], zpos[~mask], dx[~mask], dy[~mask], dz[~mask],
color=cs[~mask])

这给

enter image description here

关于python - 在 matplotlib 中制作高度为 0 的透明色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60111736/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com