bird_2021 2021-05-10 15:12 采纳率: 71.4%
浏览 52
已采纳

python绘制前后2个长方体,前面的长方体显示不了?

python调用bar3d()绘制前后2个长方体,显示时从前往后看,绝大多数角度不能正常观看前面的长方体(如下图),不知是什么原因?

(1)此角度黑色物体正常显示

(2)此角度黑色物体非常显示

代码如下:

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

class Rect:
    def draw_pic(self):
        fig = plt.figure(figsize=(8, 6), dpi=80)
        ax = fig.gca(projection='3d')

        pos_x_sec, pos_y_sec, pos_z_sec = 0, 50, 0
        size_x_sec, size_y_sec, size_z_sec = 40, 10, 80
        color = ["orange"]
        self.draw_bar3d(ax, pos_x_sec, pos_y_sec, pos_z_sec, size_x_sec, size_y_sec, size_z_sec, color)

        pos_x, pos_y, pos_z = 0, 40, 0
        size_x, size_y, size_z = 30, 10, 60
        color = ["grey"]
        self.draw_bar3d(ax, pos_x, pos_y, pos_z, size_x, size_y, size_z, color)
        plt.show()

    def draw_bar3d(self, ax, pos_x, pos_y, pos_z, size_x, size_y, size_z, color):
        bar_x = np.linspace(pos_x, size_x + pos_x, 1)
        bar_y = np.linspace(pos_y, size_y + pos_y, 1)
        X, Y = np.meshgrid(bar_x, bar_y)
        X, Y = X.ravel(), Y.ravel()
        gg = np.linspace(size_z, size_z, 2)
        Z = [pos_z, pos_z]
        c = color * len(gg)
        ax.bar3d(X, Y, Z, size_x, size_y, gg, color=c, shade=True, zsort='average')

if __name__ == '__main__':
    rect = Rect()
    rect.draw_pic()

  • 写回答

2条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-05-10 16:19
    关注

    matplotlib的3D是一个toolkits,效果、速度都只能算差强人意。你可以试试这个:

    import wxgl.wxplot as plt
    plt.cube((15,35,10), (30,20,20), 'orange', mode='FCBC')
    plt.cube((20,55,15), (40,20,30), 'cyan', mode='FCBC')
    plt.show()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100