matplotlib 中的棱镜
Posted
技术标签:
【中文标题】matplotlib 中的棱镜【英文标题】:Prism in matplotlib 【发布时间】:2022-01-22 09:25:00 【问题描述】:我正在尝试使用plot_surface
绘制棱镜
我有point
- vertices faces
和edges
我有所有要构建的数据,但不知道如何去做。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
point=np.array([[0,0,1.322876],[1.309307,0,0.1889822],[-0.9819805,0.8660254,0.1889822],[0.1636634,-1.299038,0.1889822],[0.3273268,0.8660254,-0.9449112],[-0.8183171,-0.4330127,-0.9449112]])
faces=np.array([[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]])
edges=np.array([[2,4],[1,4],[3,5],[0,2],[2,5],[1,3],[0,1],[0,3],[4,5]])
x=np.array(point[:, 0])
y=np.array(point[:, 1])
z=np.array(point[:, 2])
X, Y = np.meshgrid(x, y)
ax.scatter(x,y,z,depthshade=False)
plt.show()
如果有任何答案,我将不胜感激
【问题讨论】:
我不知道你的问题是什么。您的文本不知道,然后是一段代码,这些代码执行您似乎不知道的事情。请提出具体问题。 @MadPhysicist 我认为 op 试图在他上传的图中绘制多边形网格。他附加的代码是他迄今为止尝试过的绘制顶点的代码 【参考方案1】:用颜色尽力了
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection
fig = plt.figure(figsize=(12, 6))
ax = plt.axes(projection='3d')
point=np.array([[0,0,1.322876],[1.309307,0,0.1889822],[-0.9819805,0.8660254,0.1889822],[0.1636634,-1.299038,0.1889822],[0.3273268,0.8660254,-0.9449112],[-0.8183171,-0.4330127,-0.9449112]])
faces=np.array([[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]], dtype = 'O')
edges=np.array([[2,4],[1,4],[3,5],[0,2],[2,5],[1,3],[0,1],[0,3],[4,5]])
face3d = [[point[y] for y in x] for x in faces]
edge3d = [[point[y] for y in x] for x in edges]
x=np.array(point[:, 0])
y=np.array(point[:, 1])
z=np.array(point[:, 2])
ax.scatter(x, y, z, marker='.')
for i, p in enumerate(face3d):
if i!=1:
ax.add_collection3d(Poly3DCollection([p], facecolors='red', alpha=0.5))
else:
pass
ax.add_collection3d(Poly3DCollection(face3d[1], facecolors='yellow', alpha=0.5))
ax.add_collection3d(Line3DCollection(edge3d, colors='black', linewidths=1, linestyles='-'))
ax.view_init(-80, 40)
plt.show()
【讨论】:
以上是关于matplotlib 中的棱镜的主要内容,如果未能解决你的问题,请参考以下文章
请教如何自定义python的matplotlib中的X轴刻度的问题
如何使用 matplotlib blitting 将 matplot.patches 添加到 wxPython 中的 matplotlib 图?