matplotlib 中的棱镜

Posted

技术标签:

【中文标题】matplotlib 中的棱镜【英文标题】:Prism in matplotlib 【发布时间】:2022-01-22 09:25:00 【问题描述】:

我正在尝试使用plot_surface 绘制棱镜 我有point- vertices facesedges 我有所有要构建的数据,但不知道如何去做。

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 图?

为何学习matplotlib-老鱼学matplotlib

如何更改 matplotlib(python)中的字体?

网络中的 Matplotlib 图像属性(Django)

Python-Matplotlib可视化(番外篇)——Matplotlib中的事件处理详解与实战