- 3-Мерные графики в Python с использованием Matplotlib
- Как построить трехмерные графики в Python?
- 1. Импортируйте необходимые модули
- 2. Создайте трехмерные оси
- 3. Добавление заголовка к сюжету
- 4. Создайте спираль
- 5. Измените угол обзора
- 6. Построение каркаса из проволоки
- 7. Создайте поверхностный участок
- Вывод
- Читайте ещё по теме:
- Графики функций и поверхностей в Python Питон Matplotlib
- Построение графиков с помощью модуля Matplotlib в Python Питон.
- Отображение нескольких графиков на одном рисунке в Python
- Трехмерные поверхности в Python
3-Мерные графики в Python с использованием Matplotlib
Как и 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():
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, обратитесь к их официальной документации.
Читайте ещё по теме:
Графики функций и поверхностей в Python Питон Matplotlib
Построение графиков с помощью модуля Matplotlib в Python Питон.
В этом уроке мы разберём, как строить графики функций с помощью модуля Matplotlib в Python Питон.
Matplotlib это библиотека для Python, предназначенная для визуализации данных. В данном уроке мы разберём построение графиков функций в Питон на плоскости и построение поверхности в трёхмерном пространстве. Зачастую, именно Matplotlib используется в научных исследованиях и конференциях для демонстрации полученных данных.
Для построения графиков нужно импортировать модуль Pyplot. Pyplot это модуль для работы с графиками в Питоне. Pyplot это набор команд, созданных для построения графиков функций и уравнений. Для удобного построения графиков так же нужно использовать библиотеку NumPy.
Matplotlib, как и NumPy, встроен в среду разработки Spyder, поэтому их можно импортировать без предварительной установки.
import numpy as np
import matplotlib.pyplot as plt
as np и as plt означает, что когда мы будем вызывать функции и процедуры из модулей, вместо названия модулей мы будем использовать np и plt .
Для построения графика функции в Python нужно задать саму функцию. Её можно задать с помощью лямбда-функции. Лямбда-функция — это краткий способ записи обычной функции в одну строчку. В этом уроке мы рассмотрим построение синусоиды на Питоне. Синусоида задаётся функцией f(x) = sin(x) .
y = lambda x: np.sin(x)
y это обозначение функции (для её вызова мы будем использовать y(x) ), lambda это ключевое слово, обозначающее начало задания лямбда-функции, x это аргумент, использующийся в функции, после двоеточия задаётся функция. Так как в стандартном Python нет функции, возвращающей синус x , мы его задаём с помощью NumPy, его мы импортировали под именем np .
Все действия в Pyplot производятся на рисунках. Для построения графика функции в Python нужно сначала задать сетку координат. Сетка координат в python задается с помощью команды plt.subplots().
fig = plt.subplots()
Мы должны определить область значений, на которой мы будем строить график функции в Питоне. Это делается с помощью linspace .
x = np.linspace(-3, 3, 100)
linspace создаёт массив с нижней границей -3 и верхней границей 3 , в созданном массиве будет 100 элементов. Чем больше будет последнее число, тем больше значений функции будет рассчитываться, тем точнее будет отображаться график в Python.
После того, как мы создали систему координат, область построения, мы можем построить график в Питон. Для построения графика фуекции в Python нужно использовать команду plt.plot(x, y(x)) , где x это аргумент, y(x) это функция от x , заданная с помощью лямбда-выражения.
plt.plot(x, y(x))
После того, как мы построили график в Python, нужно показать его на рисунке. Для этого используется plt.show() .
Полный код программы на python для рисования графика функции
# импортируем модули
import numpy as np
import matplotlib.pyplot as plt
# функция
y = lambda x: np.sin(x)
# создаём рисунок с координатную плоскость
fig = plt.subplots()
# создаём область, в которой будет
# — отображаться график
x = np.linspace( -3, 3, 100)
# значения x, которые будут отображены
# количество элементов в созданном массиве
# — качество прорисовки графика
# рисуем график
plt.plot(x, y(x))
# показываем график
plt.show()
Получим график синусоиды в python в отдельном окне
Отображение нескольких графиков на одном рисунке в Python
В одной области в python можно отобразить графики нескольких функций. Добавим aeyrwb. y=x и нарисуем ее совместно с синусоидой.
Для этого введем еще одну функцию с помощью lambda
y1=lambda x: x
Построим график этой функции
plt.plot(x,y1(x))
В итоге программа в Python для построения графиков двух функций в одном окне
# импортируем модули
import numpy as np
import matplotlib.pyplot as plt
# функция
y = lambda x: np.sin(x)
y1=lambda x: x
# создаём рисунок с координатную плоскость
fig = plt.subplots()
# создаём область, в которой будет
# — отображаться график
x = np.linspace(-3, 3,100)
# значения x, которые будут отображены
# количество элементов в созданном массиве
# — качество прорисовки графика
# рисуем график
plt.plot(x, y(x))
plt.plot(x,y1(x))
# показываем график
plt.show()
Трехмерные поверхности в Python
В трёхмерном пространстве каждая точка задаётся тремя координатами, следовательно, в трёхмерном пространстве нужно два аргумента для задания функции. В этом уроке по Питону мы зададим функцию
f(x,y)=x^2-y^2
от двух аргументов. Аргументы x и y , функция z .
f = lambda x, y: x ** 2 — y ** 2
Чтобы начать рисовать трехмерные поверхности в Python нужно сначал задать область построения с помощью функции plt.figure принимает параметр figsize(x, y) , где x и y – ширина и высота рисунка в дюймах. Создадим рисунок в Python размером 12×6 дюймов для отображения графиков
fig = plt.figure(figsize = (12, 6))
В построенной области мы создадим рисунок, в котором будут отображено трёхмерное пространство с координатными осями и сама поверхность. В Питоне для этого используется fig.add_subplot() .
ax = fig.add_subplot(1, 1, 1, projection = ‘3d’)
Функция в Python fig.add_subplot() разбивает область построения на клетки и задает в какой клетке рисовать трехмерный график. Так команда ax = fig.add_subplot(1, 1, 1, projection = ‘3d’) разбивает область построения на две клтки и в первую клетку будет отображаться трехмерный гарфик, благодаря аргументу projection = ‘3d’
Введём области отображения функции для каждого аргумента в Питон.
xval = np.linspace(-5, 5, 100)
yval = np.linspace(-5, 5, 100)
Нужно создать поверхность, которая будет отображаться на рисунке в Python. Для этого используется
surf = ax.plot_surface(x, y, z, rstride = 4, cstride = 4, cmap = cm.plasma)
Где x и y это принимаемые аргументы, z это получаемая функция, rstride и cstride отвечает за шаг прорисовки поверхности в Питон, чем меньше будут эти значения, тем более плавно будет выглядеть градиент на поверхности. С помощью cmap.plasma поверхность будет отображаться с цветовой схемой plasma . Например, существуют цветовые схемы, такие как viridis и magma . Полный список цветовых схем есть на сайте Matplotlib.
Пример программы на Python построение поверхности в трёхмерном пространстве # импортируем модули
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import cm
import matplotlib.pyplot as plt
# уравнение поверхности
f = lambda x, y: x ** 2 — y ** 2
# создаём полотно для рисунка
fig = plt.figure(figsize = (10, 10))
# создаём рисунок пространства с поверхностью
ax = fig.add_subplot(1, 1, 1, projection = ‘3d’)
# размечаем границы осей для аргументов
xval = np.linspace(-4, 4, 100)
yval = np.linspace(-4, 4, 100)
# создаём массив с xval столбцами и yval строками
# — в этом массиве будут храниться значения z
x, y = np.meshgrid(xval, yval)
# приравниваем z к функции от x и y
z = f(x, y)
# создаём поверхность
surf = ax.plot_surface(
# отмечаем аргументы и уравнение поверхности
x, y, z,
# шаг прорисовки сетки
# — чем меньше значение, тем плавнее
# — будет градиент на поверхности
rstride = 10,
cstride = 10,
# цветовая схема plasma
cmap = cm.plasma)
Получим график трехмерной поверхности в цветовой гамме в специальном окне
Изменим параметры построения трехмерной поверхности, уменьшим размер сетик, сделаем поверхность более плавной и точной для этого уменьшаем параметры и сменим цветовую гамму на viridis
rstride = 2,
cstride = 2,
cmap = cm.viridis)
Получим график трехмерной поверхности в Python более точный и в другой цветовой гамме