Создайте трехмерные воксельные диаграммы с RGB

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь создавать трехмерную воксельную диаграмму с RGB-цветами с использованием Matplotlib. Воксельные диаграммы представляют собой способ визуализации трехмерных данных на двухмерной диаграмме с использованием кубиков для представления точек данных. RGB-цвета будут использоваться для представления различных значений данных.

Советы по работе с ВМ

После запуска виртуальной машины нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Прежде чем создать диаграмму, нам нужно импортировать необходимые библиотеки. В этом случае мы будем использовать Matplotlib и NumPy.

import matplotlib.pyplot as plt
import numpy as np

Определение координат и цветов

Далее нам нужно определить координаты и цвета для диаграммы. В этом примере мы будем использовать функцию np.indices, чтобы создать трехмерную сетку размером 17x17x17 значений для RGB-цветов.

r, g, b = np.indices((17, 17, 17)) / 16.0

Мы также определим функцию midpoints, чтобы найти середины между значениями в сетке. Она будет использована позже для создания сферы.

def midpoints(x):
    sl = ()
    for _ in range(x.ndim):
        x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
        sl += np.index_exp[:]
    return x

Создание сферы

Теперь мы создадим сферу на диаграмме, определив условие для RGB-значений, которые находятся на определенном расстоянии от центра диаграммы.

rc = midpoints(r)
gc = midpoints(g)
bc = midpoints(b)

sphere = (rc - 0.5)**2 + (gc - 0.5)**2 + (bc - 0.5)**2 < 0.5**2

Объединение цветов

Теперь мы объединим компоненты RGB-цвета в одномерный массив формы (17, 17, 17, 3).

colors = np.zeros(sphere.shape + (3,))
colors[..., 0] = rc
colors[..., 1] = gc
colors[..., 2] = bc

Построение воксельной диаграммы

Наконец, мы можем построить воксельную диаграмму с использованием функции ax.voxels. Мы передадим RGB-значения, условие для сферы, цвета граней, цвета рёбер и толщину линии.

ax = plt.figure().add_subplot(projection='3d')
ax.voxels(r, g, b, sphere,
          facecolors=colors,
          edgecolors=np.clip(2*colors - 0.5, 0, 1),  ## brighter
          linewidth=0.5)
ax.set(xlabel='r', ylabel='g', zlabel='b')
ax.set_aspect('equal')
plt.show()

Резюме

В этом практическом занятии мы узнали, как создавать трехмерную воксельную диаграмму с RGB-цветами с использованием Matplotlib. Мы импортировали необходимые библиотеки, определили координаты и цвета, создали сферу, объединили цвета и построили воксельную диаграмму. Воксельные диаграммы - это полезный способ представления трехмерных данных на двухмерной диаграмме, и их можно настраивать с использованием различных цветов и форм для представления разных типов данных.