如何使用matplotlib在三维中绘制六边形

如何使用matplotlib在三维中绘制六边形,matplotlib,plot,3d,Matplotlib,Plot,3d,我已经尝试了一些搜索的方法,但是我对顶点的理解有点欠缺,或者至少现在大脑会衰退,有人能帮我吗?我需要一个规则的六边形 from matplotlib import pyplot as plt from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection fig = plt.figure(figsize=(15,9)) ax = fig.add_subplot(111, projection='3d') x

我已经尝试了一些搜索的方法,但是我对顶点的理解有点欠缺,或者至少现在大脑会衰退,有人能帮我吗?我需要一个规则的六边形

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection

fig = plt.figure(figsize=(15,9))
ax = fig.add_subplot(111, projection='3d')

x = [0, 2, 1, 1,1,1]
y = [0, 0, 1, 0, 1,1]
z = [0, 0, 0, 1,1,1]

vertices = [[0, 1, 2], [0, 1, 3], [0, 2, 3], [1, 2, 3],[0,1,2],[0,1,2]]

tupleList = list(zip(x, y, z))

poly3d = [[tupleList[vertices[ix][iy]] for iy in range(len(vertices[0]))] for ix in range(len(vertices))]
ax.scatter(x,y,z)
ax.add_collection3d(Poly3DCollection(poly3d, facecolors='w', linewidths=1, alpha=0.5))
ax.add_collection3d(Line3DCollection(poly3d, colors='k', linewidths=0.2, linestyles=':'))

plt.show()

Matplotlib不适用于real 3D。 matplotlib中的3D内容主要是为了更好地显示2D数据。 如果你需要真正的三维可视化,我推荐Mayavi或VTK


如果您的六边形不能表示为两个变量的数学函数(例如z=f(x,y)),则matplotlib是错误的工具。

我不确定我是否理解您的要求。六边形是二维的。你想要六边形的脸吗?是的,我需要六边形的脸?还是只有一个六边形?我需要一个六边形,里面还有一个是虚线:)