Programing

python-matplotlib에서 3D 다각형 플로팅

crosscheck 2020. 12. 31. 22:51
반응형

python-matplotlib에서 3D 다각형 플로팅


다음과 같은 간단한 질문에 대한 해결책을 찾기 위해 웹 검색에 실패했습니다.


꼭지점 값을 사용하여 3D 다각형 (채워진 사각형 또는 삼각형)을 그리는 방법은 무엇입니까? 나는 많은 아이디어를 시도했지만 모두 실패했습니다.

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0,1,1,0]
y = [0,0,1,1]
z = [0,1,0,1]
verts = [zip(x, y,z)]
ax.add_collection3d(PolyCollection(verts),zs=z)
plt.show()

어떤 아이디어 나 의견도 미리 감사드립니다.

수락 된 답변에 따른 업데이트 :

import mpl_toolkits.mplot3d as a3
import matplotlib.colors as colors
import pylab as pl
import scipy as sp

ax = a3.Axes3D(pl.figure())
for i in range(10000):
    vtx = sp.rand(3,3)
    tri = a3.art3d.Poly3DCollection([vtx])
    tri.set_color(colors.rgb2hex(sp.rand(3)))
    tri.set_edgecolor('k')
    ax.add_collection3d(tri)
pl.show()

결과는 다음과 같습니다. 여기에 이미지 설명 입력


거의 다하신 것 같아요. 이것이 당신이 원하는 것입니까?

from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
x = [0,1,1,0]
y = [0,0,1,1]
z = [0,1,0,1]
verts = [list(zip(x,y,z))]
ax.add_collection3d(Poly3DCollection(verts))
plt.show()

대체 텍스트 art3d.pathpatch_2d_to_3d에도 관심이있을 수 있습니다.


위의 솔루션은 Python 2 용이며, Python 3으로 실행하면 'TypeError : object of type'zip 'has no len ()'오류가 발생합니다.

이것을 Python 3으로 업데이트하는 방법에 대한 논의 는 Python 3에서 3D 다각형 그리기를 참조하십시오 .

여기에서 몇 가지 작업 코드가 있습니다.

from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)
x = [0, 1, 1, 0]
y = [0, 0, 1, 1]
z = [0, 1, 0, 1]
verts = [list(zip(x, y, z))]
print(verts)
ax.add_collection3d(Poly3DCollection(verts), zs='z')
plt.show()

참조 URL : https://stackoverflow.com/questions/4622057/plotting-3d-polygons-in-python-matplotlib

반응형