plt.Circle()与带有projection='3d'的轴一起使用时具有奇怪的行为

2024-09-26 17:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这是预期的行为,我很抱歉,但我想更好地了解这里发生了什么。如果我试着用plt.circle和projection='3d'画一个圆

import matplotlib.pyplot as plt

f2 = plt.figure()
ax1 = f2.add_subplot(1,1,1,projection='3d')

x = plt.Circle([1,1],radius=10)
ax1.add_artist(x)

ax1.set_xlim(0,100)
ax1.set_ylim(0,100)
ax1.set_zlim(0,100)

plt.show()

然后我得到了以下奇怪的结果:

enter image description here

虽然如果我只是删除投影,一切都如预期的那样工作。我想了解一下为什么会出现这种奇怪的结果,我想我不完全理解为什么投影——3d'会把事情弄得一团糟


Tags: importaddmatplotlibaspltf2投影figure
1条回答
网友
1楼 · 发布于 2024-09-26 17:46:05

你需要从2d到3d的投影来适应你的圆形艺术家。一种方法是创建一个圆形面片,并将其映射到3d,如here所示,我已经对其进行了修改,以回答您的问题。您可以根据需要选择zdir='x'作为zdir='y'zdir='z'

import matplotlib.pyplot as plt
from matplotlib.patches import Circle, PathPatch
from mpl_toolkits.mplot3d import Axes3D 
import mpl_toolkits.mplot3d.art3d as art3d

f2 = plt.figure()
ax1 = f2.add_subplot(1,1,1,projection='3d')

circle = Circle((1, 1), 10, edgecolor='red', facecolor=None, fill=False)
ax1.add_patch(circle)
art3d.pathpatch_2d_to_3d(circle, z=0, zdir='x')

ax1.set_xlim3d(-20, 20)
ax1.set_ylim3d(-20, 20)
ax1.set_zlim3d(-20, 20)

enter image description here

相关问题 更多 >

    热门问题