pto*_*ato 9 python matplotlib mplot3d
我正在尝试在matplotlib上制作一个3D图,其上有三个圆,每个圆都以原点为中心,半径为1,指向不同的方向 - 例如,用于说明半径为1的球体.
在2D中,我会制作一个圆形补丁集合并将其添加到轴上.在3D中,我很难让补丁显示出来,更不用说将它们定向在不同的方向.
import matplotlib
import matplotlib.pyplot as P
import mpl_toolkits.mplot3d as M3
fig = P.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
circles = matplotlib.collections.PatchCollection(
[matplotlib.patches.Circle((0, 0), 1) for count in range(3)],
offsets=(0, 0))
M3.art3d.patch_collection_2d_to_3d(circles, zs=[0], zdir='z')
ax.add_collection(circles)
P.show()
Run Code Online (Sandbox Code Playgroud)
无论我如何旋转绘图,运行此程序都会用蓝色填充整个绘图窗口,即补丁的面部颜色.如果我facecolor='none'在PatchCollection()通话中设置,则显示空白Axes3D.
我试过的事情:
CircleCollection而不是a PatchCollection,则根本不显示任何补丁.调用中的zs参数patch_collection_2d_to_3d()是奇数; 我希望放置zs=0(所有三个补丁的一个z坐标)或zs=[0,0,0](每个补丁的一个单独的z坐标),但这两个都抛出一个错误:
ValueError:使用序列设置数组元素.
以定向补丁不同,我会希望能够通过类似zdir=['x', 'y', 'z']但结果并没有什么不同我是否传递或'z'或['z'].
ax.add_collection3d(circles, zs=[0, 0, 0], zdir=['x', 'y', 'z'])而不是将补丁集合从2d转换为3d,但这也会引发错误:
AttributeError:'Patch3DCollection'对象没有属性'set_sort_zpos'
小智 12
import matplotlib.pyplot as plt
from matplotlib.patches import Circle, PathPatch
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d.art3d as art3d
fig = plt.figure()
ax=fig.gca(projection='3d')
for i in ["x","y","z"]:
circle = Circle((0, 0), 1)
ax.add_patch(circle)
art3d.pathpatch_2d_to_3d(circle, z=0, zdir=i)
ax.set_xlim3d(-2, 2)
ax.set_ylim3d(-2, 2)
ax.set_zlim3d(-2, 2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8332 次 |
| 最近记录: |