반응형
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
반응형
'Programing' 카테고리의 다른 글
Swift에서 배열 "Join"기능의 목적 (0) | 2021.01.05 |
---|---|
유니 코드 what ()의 예외 (0) | 2020.12.31 |
Flask에서 데이터베이스에 연결하면 어떤 접근 방식이 더 낫습니까? (0) | 2020.12.31 |
Xcode 7 : 저장소에서 .xcscmblueprint를 무시 하시겠습니까? (0) | 2020.12.31 |
암호화 된 보안 인증 토큰 생성 (0) | 2020.12.31 |