Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中的三维打印中,打印不在FancyBoxPatch前面的曲面_Python_Matplotlib - Fatal编程技术网

Python 在matplotlib中的三维打印中,打印不在FancyBoxPatch前面的曲面

Python 在matplotlib中的三维打印中,打印不在FancyBoxPatch前面的曲面,python,matplotlib,Python,Matplotlib,我试图在matplotlib中的FancyBoxPatch前面绘制一个球体。但是,球体被FancyBoxPatch覆盖。我的最小工作示例如下所示: #!/usr/bin/env python3

我试图在matplotlib中的FancyBoxPatch前面绘制一个球体。但是,球体被FancyBoxPatch覆盖。我的最小工作示例如下所示:

 #!/usr/bin/env python3                                                                                                                                                                                      

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

 if __name__ == '__main__':

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

     for i in range(7):
         for j in range(7):

             box = FancyBboxPatch((i, j),
                                  1, 1,
                                  boxstyle = 'square,pad=-0.1',
                                  edgecolor = (0.333, 0.333, 0.333),
                                  facecolor = (0.333, 0.333, 0.333))
                                  #zorder = 0)                                                                                                                                                               

             axes.add_patch(box)
             art3d.pathpatch_2d_to_3d(box, z = 0, zdir = 'x')

     u = np.linspace(0, 2 * np.pi, 100)
     v = np.linspace(0, np.pi, 100)
     x = 0.3 * np.outer(np.cos(u), np.sin(v))
     y = 0.3 * np.outer(np.sin(u), np.sin(v))
     z = 0.3 * np.outer(np.ones(np.size(u)), np.cos(v))

     surface = axes.plot_surface(x + 1, y + 1, z + 5, color = 'red')
                                 #zorder = 100,                                                                                                                                                              
                                 #alpha = 1)                                                                                                                                                                 

     axes.set_xlim3d(0, 14)
     axes.set_ylim3d(0, 14)
     axes.set_zlim3d(0, 14)

     plt.show()
这将生成绘图:

在图中,球体完全被FancyBoxPatches覆盖

正如您在注释掉的部分脚本中所看到的,我使用了关键字参数“alpha”和“zorder”(我不想更改FancyBoxPatches的alpha)来尝试在FancyBoxPatches上绘制球体,但没有成功


如何在FancyBoxPatches前面绘制球体?或者答案是否与我应该尝试MayaVi相似?

虽然可能有某种方法可以解决特定视角的特定情况,总体趋势与链接问题中的相同,也与:matplotlib从未被设计为擅长3D渲染,而mayavi可能是更好的选择。虽然可能有某种方法可以解决特定视角下的这种特定情况,总体趋势与链接问题相同,也与:matplotlib从未被设计为擅长3D渲染,mayavi可能是更好的选择。