У меня нет большого опыта работы с Python 3.8 и с Matplotlib. Я пытаюсь построить большой куб, состоящий из маленьких прозрачных вокселей и некоторых непрозрачных
Это код, который я использую:
import matplotlib.pyplot as plt
import numpy as np
# This import registers the 3D projection, but is otherwise unused.
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
# prepare some coordinates
x, y, z = np.indices((8, 8, 8))
# draw cuboids transparent cuboids and opaque cuboids
transparent_cubes = (x < 8) & (y < 8) & (z < 8)
opaque_cubes_1 = ( x < 2) & (y == 0 ) & (z == 3)
opaque_cubes_2 = ( x == 5) & (y == 5 ) & (z == 5)
# combine the objects into a single boolean array
voxels1 = transparent_cubes
voxels2 = opaque_cubes_1 | opaque_cubes_2
# set the colors of each object
colors1 = np.empty(voxels1.shape, dtype=object)
colors1[transparent_cubes] = 'white'
colors2 = np.empty(voxels2.shape, dtype=object)
colors2[opaque_cubes_1] = 'red'
colors2[opaque_cubes_2] = 'red'
# and plot everything
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.voxels(voxels1, facecolors=colors1, edgecolor='none', alpha=0.4)
ax.voxels(voxels2, facecolors=colors2, edgecolor='none')
plt.show()
И это сгенерированный график:
Но потом, я подумал, если я увеличу координаты, как я могу рисовать более сложные формы? Например, эту:
Как лучше всего это сделать? Сделать это кубоид за кубоидом может быть сложно, и я не знаю, каковы точные координаты каждого вокселя. Итак, есть идеи?