勤勉苦学xvv 2021-03-05 20:25 采纳率: 100%
浏览 548
已结题

怎么用matplotlib用triangle mesh绘制长方体?

我打算绘制六个平面组合在一起构成一个长方体,但是无法绘制垂直于地面的平面,只能绘制平行于地面的平面。报错信息如下:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.random.rand(20)
y = [0] * 20
z =np.random.rand(20)

ax.plot_trisurf(x, y, z)
plt.show()
RuntimeError: Error in qhull Delaunay triangulation calculation: singular input data (exitcode=2); use python verbose option (-v) to see original qhull error.
  • 写回答

3条回答 默认 最新

  • 皮皮宽 2021-03-06 20:01
    关注

    plot_trisurf()这个函数的作用是,把一定数量的点(x,y,z),连接成一个平面,但不能垂直地面;

    你的程序错误在于,y为常数,垂直地面所以报错,我的思路和你一样,绘制六个平面构成立方体,既然不能垂直地面(x,y不能是常数),那就给它加一个渐进的很小的数,就可以了,程序如下:

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
     
    x = np.arange(0,1.1,0.1)
    y = np.arange(0,1.1,0.1)
    xx,yy = np.meshgrid(x, y)
    
    dz = np.arange(0,0.00000121,0.00000001) #xx,yy的数量为121,因此取121个很小的,渐进的数
    dz = dz.reshape(xx.shape[0],xx.shape[1]) # 保证xyz三个参数形状一样
    
    z1 = np.zeros((xx.shape[0],xx.shape[1]))
    z2 = np.ones((xx.shape[0],xx.shape[1]))
    
    z1 = z1 + dz  #这样得到z1全都十分接近于0,但互相不相等
    z2 = z2 + dz
    
    ax.plot_trisurf(xx.flatten(), yy.flatten(), z1.flatten()) 
    ax.plot_trisurf(xx.flatten(), yy.flatten(), z2.flatten())
    ax.plot_trisurf(xx.flatten(), z1.flatten(), yy.flatten())
    ax.plot_trisurf(xx.flatten(), z2.flatten(), yy.flatten())
    ax.plot_trisurf(xx.flatten(), yy.flatten(), z1.flatten())
    ax.plot_trisurf(xx.flatten(), yy.flatten(), z2.flatten())
    ax.plot_trisurf(z1.flatten(), xx.flatten(), yy.flatten())
    ax.plot_trisurf(z2.flatten(), xx.flatten(), yy.flatten())
    
    plt.show()

    程序运行结果如下: 

    评论

报告相同问题?

悬赏问题

  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥50 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
  • ¥20 vue+UEditor附件上传问题
  • ¥15 想做个WPS的自动化代码,不知道能做的起不。
  • ¥15 uniApp,生成安卓安卓包后,黑暗主题中间内容不生效,底部导航正常
  • ¥15 斯坦福自动漂移非线性模型反解