Как я могу нарисовать кошку в Matplotlib с помощью вокселей? - PullRequest
1 голос
/ 06 мая 2020

У меня нет большого опыта работы с 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()

И это сгенерированный график: enter image description here

Но потом, я подумал, если я увеличу координаты, как я могу рисовать более сложные формы? Например, эту:

enter image description here

Как лучше всего это сделать? Сделать это кубоид за кубоидом может быть сложно, и я не знаю, каковы точные координаты каждого вокселя. Итак, есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...