将圆柱体添加到绘图

发布于 2021-01-29 16:56:25

我想在我的3D散点图中添加一个透明圆柱体。我该怎么做?

这是我用来绘制情节的代码:

fig = plt.figure(2, figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

ax.scatter(X, Y, Z, c=Z,cmap=plt.cm.Paired)
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
plt.xticks()
关注者
0
被浏览
163
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    一种可能的方法是使用plot_surface。适应给出的解决方案在这篇博客文章则有

    import matplotlib.pyplot as plt
    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    
    # Scatter graph
    N = 100
    X = np.random.uniform(-1, 1, N)
    Y = np.random.uniform(-1, 1, N)
    Z = np.random.uniform(-2, 2, N)
    ax.scatter(X, Y, Z)
    
    # Cylinder
    x=np.linspace(-1, 1, 100)
    z=np.linspace(-2, 2, 100)
    Xc, Zc=np.meshgrid(x, z)
    Yc = np.sqrt(1-Xc**2)
    
    # Draw parameters
    rstride = 20
    cstride = 10
    ax.plot_surface(Xc, Yc, Zc, alpha=0.2, rstride=rstride, cstride=cstride)
    ax.plot_surface(Xc, -Yc, Zc, alpha=0.2, rstride=rstride, cstride=cstride)
    
    ax.set_xlabel("X")
    ax.set_ylabel("Y")
    ax.set_zlabel("Z")
    plt.show()
    

    在此处输入图片说明

    我添加了一些最小的表面配置,可以通过查阅docs来实现更好的配置。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看