填充3d投影中图下方的空间

问题描述 投票:1回答:1

我想填充3D图中曲线下方的区域。在2d绘图中,我已经使用fill_between进行类似操作。在3d环境中是否有一个简单的等效方法?曲线在y-z平面中。

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

def gaussian(x, mu, sig):
    return np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.)))



x=[-1,0,1,2,3,4]
y=[0,1,2,3,4,5]
sigma=0.4
m=1
b=1

Blankz=np.empty([0])
Blanky=np.empty([0])
Blankx=np.empty([0])
j=0
for i in np.arange(-0.5,2.5,0.01):
    Blankz=np.insert(Blankz,j,gaussian(i,1,sigma))
    Blanky=np.insert(Blanky,j,i)
    Blankx=np.insert(Blankx,j,0)
    j=j+1


fig=plt.figure(figsize=(16,6))
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim(-1,5)
ax.set_ylim(-1,6)
ax.set_zlim(0,1)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.plot(x,y,0, color="blue",linestyle="dashed")

plt.plot(Blankx,Blanky,Blankz, color="red")
ax.view_init(60,320)

enter image description here基本上我想要一个fill_between函数来填充从z = Blankz [i]到z = 0的y = -0.5,2.5范围内的区域。我希望填充高斯分布的区域。

python matplotlib 3d
1个回答
0
投票

尝试matplotlib.collections.PolyCollectionmatplotlib.collections.PolyCollection

add_collection3d

完整代码

add_collection3d

输出verts = [list(zip(Blanky, Blankz))] poly = PolyCollection(verts, facecolors=[mcolors.to_rgba('y', alpha=0.6)]) ax.add_collection3d(poly, zs=[Blankx[0]], zdir='x')

© www.soinside.com 2019 - 2024. All rights reserved.