3D-графика — это очень важные инструменты для визуализации данных с разными измерениями, например, данных с двумя зависимыми и одной независимой переменной.Построив 3D-графику, мы можем глубже понять данные с переменными состояниями.Для построения 3D-графиков можно использовать различные функции библиотеки matplotlib.

Пример построения трехмерных графиков с использованием Matplotlib

Сначала мы построим 3D-ось с помощью библиотеки Matplotlib. Для построения 3D-оси нам нужно просто изменить параметры проекции в plt.оси() с None в 3D.

import numpy as np
import matplotlib.pyplot as plt

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

Вывод:

python-matplotlib-3d-1

Построение 3D-осей с использованием matplotlib

С помощью приведенного выше синтаксиса можно включить трехмерные оси и отображать данные в трех измерениях.Трехмерный график обеспечивает динамичный подход и делает данные более интерактивными.Как и в случае с двумерными графиками, мы можем использовать разные способы представления трёхмерных графиков.Мы можем переместить точечный график, контурный график, поверхностный график и т. д.Давайте рассмотрим различные трехмерные графики.
Графики с линиями и точками — это простейшие трехмерные графики.Мы будем использовать ax.plot3d и  ax.scatter функции для построение линейного и точечного графиков соответственно.

Трехмерный линейный график использование Matplotlib

Для строительства трехмерного линейного графика мы будем использовать функцию mplot3d из библиотеки mpl_toolkits.Для построения линий в 3D нам необходимо создать три переменные точки для уравнения линии.В нашем случае мы определяем три переменных как х, у и z.

# importing mplot3d toolkits, numpy and matplotlib
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()

# syntax for 3-D projection
ax = plt.axes(projection ='3d')

# defining all 3 axis
z = np.linspace(0, 1, 100)
x = z * np.sin(25 * z)
y = z * np.cos(25 * z)

# plotting
ax.plot3D(x, y, z, 'green')
ax.set_title('3D line plot geeks for geeks')
plt.show()

Выход:
 

скачать-_3_

3D линейный график с использованием библиотеки matplotlib

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

Для построения того же графика с использованием точек рассеяния мы воспользуемся функцией scatter() из matplotlib. Она построит то же уравнение прямой, используя другие точки.

# importing mplot3d toolkits
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()

# syntax for 3-D projection
ax = plt.axes(projection ='3d')

# defining axes
z = np.linspace(0, 1, 100)
x = z * np.sin(25 * z)
y = z * np.cos(25 * z)
c = x + y
ax.scatter(x, y, z, c = c)

# syntax for plotting
ax.set_title('3d Scatter plot geeks for geeks')
plt.show()

Вывод:
 

python-matplotib-3d-3

Трехмерное построение точек с использованием библиотеки Matplotlib

Графики поверхности с использованием библиотеки Matplotlib

Поверхностные графики и каркасные графики работают с данными в виде сетки. Они берут значение сетки и отображают его на трёхмерной поверхности. Мы будем использовать функцию plot_surface() для построения поверхностного графика.

# importing libraries
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

# defining surface and axes
x = np.outer(np.linspace(-2, 2, 10), np.ones(10))
y = x.copy().T
z = np.cos(x ** 2 + y ** 3)

fig = plt.figure()

# syntax for 3-D plotting
ax = plt.axes(projection='3d')

# syntax for plotting
ax.plot_surface(x, y, z, cmap='viridis',\
				edgecolor='green')
ax.set_title('Surface plot geeks for geeks')
plt.show()

Вывод:

python-matplotlib-3d-4

Построение графиков поверхности с использованием библиотеки matplotlib

Построение каркасных графиков с использованием библиотеки Matplotlib

Для построения графика каркасных диаграмм мы будем использовать функцию plot_wireframe() из библиотеки matplotlib.

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


# function for z axis
def f(x, y):
	return np.sin(np.sqrt(x ** 2 + y ** 2))

# x and y axis
x = np.linspace(-1, 5, 10)
y = np.linspace(-1, 5, 10)

X, Y = np.meshgrid(x, y)
Z = f(X, Y)

fig = plt.figure()
ax = plt.axes(projection ='3d')
ax.plot_wireframe(X, Y, Z, color ='green')
ax.set_title('wireframe geeks for geeks');

Вывод:
 

python-matplotlib-3d-5

ТРЕХМЕРНЫЙ каркасный график с использованием библиотеки matplotlib

Контурные графики с использованием библиотеки Matplotlib

Контурный график принимает все входные данные в виде двумерных регулярных сеток, и данные Z вычисляются в каждой точке. Мы используем функцию ax.contour 3D для построения контурного графика. Контурные графики - отличный способ визуализации графиков оптимизации.

def function(x, y):
	return np.sin(np.sqrt(x ** 2 + y ** 2))


x = np.linspace(-10, 10, 40)
y = np.linspace(-10, 10, 40)

X, Y = np.meshgrid(x, y)
Z = function(X, Y)

fig = plt.figure(figsize=(10, 8))
ax = plt.axes(projection='3d')

ax.plot_surface(X, Y, Z, cmap='cool', alpha=0.8)

ax.set_title('3D Contour Plot of function(x, y) =\
				sin(sqrt(x^2 + y^2))', fontsize=14)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_zlabel('z', fontsize=12)

plt.show()

Вывод:

Скачать

Трехмерное построение контура функции с использованием matplotlib

Построение триангуляций поверхности на Python

Приведённый выше график иногда слишком ограничен и неудобен. Поэтому в этом методе мы используем набор случайных значений. Функция ax.plot_trisurf используется для построения этого графика. Он не такой понятный, но более гибкий.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.tri import Triangulation

def f(x, y):
	return np.sin(np.sqrt(x ** 2 + y ** 2))

x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)

tri = Triangulation(X.ravel(), Y.ravel())

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

ax.plot_trisurf(tri, Z.ravel(), cmap='cool', edgecolor='none', alpha=0.8)

ax.set_title('Surface Triangulation Plot of f(x, y) =\
				sin(sqrt(x^2 + y^2))', fontsize=14)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_zlabel('z', fontsize=12)

plt.show()

Вывод:

скачать-_1_

График триангуляции поверхности контурного графика с использованием matplotlib

Построение полосы Мебиуса на Python

Лента Мёбиуса,также называемая скрученным цилиндром, представляет собой одностороннюю поверхность без границ. Чтобы создать ленту Мёбиуса, подумайте о её параметризации, это двумерная лента, и нам нужны два внутренних измерения. Её угол варьируется от 0 до 2 π вокруг петли, а ширина — от -1 до 1.

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

# Define the parameters of the Möbius strip
R = 2

# Define the Möbius strip surface
u = np.linspace(0, 2*np.pi, 100)
v = np.linspace(-1, 1, 100)
u, v = np.meshgrid(u, v)
x = (R + v*np.cos(u/2)) * np.cos(u)
y = (R + v*np.cos(u/2)) * np.sin(u)
z = v * np.sin(u/2)

# Create the plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Plot the Möbius strip surface
ax.plot_surface(x, y, z, alpha=0.5)

# Set plot properties
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Möbius Strip')

# Set the limits of the plot
ax.set_xlim([-3, 3])
ax.set_ylim([-3, 3])
ax.set_zlim([-3, 3])

# Show the plot
plt.show()

Вывод:

скачать-_2_

Построение полос Мебиуса с использованием библиотеки matplotlib