-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Expand file tree
/
Copy pathpolys3d.py
More file actions
41 lines (31 loc) · 831 Bytes
/
polys3d.py
File metadata and controls
41 lines (31 loc) · 831 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""
====================
Generate 3D polygons
====================
Demonstrate how to create polygons in 3D. Here we stack 3 hexagons.
"""
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
# Coordinates of a hexagon
angles = np.linspace(0, 2 * np.pi, 6, endpoint=False)
x = np.cos(angles)
y = np.sin(angles)
zs = [-3, -2, -1]
# Close the hexagon by repeating the first vertex
x = np.append(x, x[0])
y = np.append(y, y[0])
verts = []
for z in zs:
verts.append(list(zip(x*z, y*z, np.full_like(x, z))))
verts = np.array(verts)
ax = plt.figure().add_subplot(projection='3d')
poly = Poly3DCollection(verts, alpha=.7)
ax.add_collection3d(poly)
ax.set_aspect('equalxy')
plt.show()
# %%
# .. tags::
# plot-type: 3D,
# styling: colormap,
# level: intermediate