Автор оригинала: 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()
Выход:
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, обратитесь к их официальной документации.