Рубрики
Без рубрики

3-Мерные графики в Python с использованием Matplotlib

Как и 2-мерные графики, вы также можете создавать 3-мерные графики в Python с помощью matplotlib. В этом уроке мы узнаем, как построить трехмерный график

Автор оригинала: Pankaj Kumar.

Как и 2-мерные графики, вы также можете создавать 3-мерные графики в Python с помощью matplotlib. В этом уроке мы узнаем, как строить трехмерные графики с помощью matplotlib.

Как построить трехмерные графики в Python?

Мы будем использовать инструментарий mplot3d вместе с библиотекой matplotlib . Инструментарий mplot3d построен на базе библиотеки matplotlib, чтобы упростить создание трехмерных графиков.

Так что без дальнейших задержек, давайте начнем!

1. Импортируйте необходимые модули

Для начала мы импортируем matplotlib и инструментарий mplot3d . Наряду с этими двумя, мы также импортируем numpy для создания образцов данных. Код для импорта этих трех приведен ниже.

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

2. Создайте трехмерные оси

Теперь мы можем создавать трехмерные оси, используя импортированные модули .

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')
plt.show()

Выход:

Оси

Теперь, когда у нас есть топоры, давайте попробуем что-нибудь придумать. При построении графика нам нужно убедиться,что мы предоставляем значения для всех трех осей ( x, y и z).

В следующих разделах мы узнаем, как сделать спираль, используя синусоидальные функции(синус и косинус).

Перед этим мы узнаем, как добавить заголовок к сюжету.

3. Добавление заголовка к сюжету

Вы можете добавить заголовок к своим участкам с помощью метода set_title():

ax.set_title('Learning about 3D plots') 

Чтобы увидеть приведенную выше строку кода в действии, выполните следующие действия:

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#set title
ax.set_title('Learning about 3D plots') 

plt.show()

Выход:

Участок С Названием

4. Создайте спираль

Для создания спирали мы будем использовать функцию синуса вдоль оси x и функцию косинуса вдоль оси y.

Точки данных для спирали могут быть сгенерированы следующим образом:

z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)

Здесь функция np.linspace дает 1000 точек с равным расстоянием между 0 и 15.

Полный код выглядит следующим образом:

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#cordiates for spiral
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'red')

plt.show()

Выход:

Спиральный

5. Измените угол обзора

Трехмерные графики выглядят по-разному в зависимости от угла обзора. Вы можете изменить угол обзора трехмерных графиков с помощью метода view_init():

ax.view_init(60, 50)

Полный код приведен ниже:

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#cordiates for spiral
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'red')

ax.view_init(60, 50)
plt.show()

Выход:

Изменение Угла Обзора

Здесь мы упоминаем два аргумента: высоту и угол наклона осей(в градусах).

Давайте попробуем под другим углом.

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#cordiates for spiral
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'red')

ax.view_init(120, 90)
plt.show()

Выход:

Пример 2

6. Построение каркаса из проволоки

Вы можете построить трехмерный каркас с помощью метода plot_wireframe (), как показано в приведенном ниже примере:

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#function for Z values
def f(x, y): 
    return np.cos(np.sqrt(x ** 2 + y ** 2)) 
  
# x and y values
x = np.linspace(1, 10, 10) 
y = np.linspace(1, 10, 10) 
   
X, Y = np.meshgrid(x, y) 
Z = f(X, Y) 
 
ax = plt.axes(projection ='3d') 
ax.plot_wireframe(X, Y, Z, color ='red') 

plt.show()

Выход:

Каркасный

Здесь функция np.meshgrid создает матрицы координат из векторов координат.

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

7. Создайте поверхностный участок

Мы можем создать поверхностный график с теми же данными, что и выше. Чтобы создать трехмерный график поверхности, мы будем использовать метод plot_surface ().

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

#create 3d axes
fig = plt.figure()
ax = plt.axes(projection='3d')

#function for Z values
def f(x, y): 
    return np.cos(np.sqrt(x ** 2 + y ** 2)) 
  
# x and y values 
x = np.linspace(1, 10, 10) 
y = np.linspace(1, 10, 10) 
  
X, Y = np.meshgrid(x, y) 
Z = f(X, Y) 
  
ax = plt.axes(projection ='3d') 
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                cmap='viridis')

plt.show()

Выход:

Участок поверхности

Здесь следующие аргументы означают следующее:

шаг Шаг строки массива (размер шага)
cstrike Шаг столбца массива (размер шага)
лагерь Цветовая карта для участков поверхности.

Вывод

В этом уроке речь шла о трехмерных графиках на Python. Мы научились строить трехмерные оси вместе с точками данных. Чтобы узнать больше о трехмерных фигурах в mplot3d, обратитесь к их официальной документации.