Как построить трехмерный график
параметр u [ ; ]
параметр v [ ; ]
Удалить функцию
| Операция | Описание |
|---|---|
| * | умножение |
| / | деление |
| + | сложение |
| — | вычитание |
| x^n | возведение x в степень n |
| x^(1/n) | извлечение корня n -ой степени из x |
| Константа | Описание |
|---|---|
| pi | число ПИ = 3.141592. |
| e | число Эйлера = 2.718281. |
| ln2 | натуральный логарифм от 2 |
| ln10 | натуральный логарифм от 10 |
| sqrt2 | квадратный корень из 2 |
| sqrt3 | квадратный корень из 3 |
| Функция | Описание |
|---|---|
| sqrt(x) | квадратный корень из x |
| abs(x) | абсолютное значение (модуль) x |
| ln(x) , log(x) | натуральный логарифм x |
| log2(x) | логарифм по основанию 2 от x |
| log3(x) | логарифм по основанию 3 от x |
| lg(x) , log10(x) | логарифм по основанию 10 от x |
| exp(x) | возводит число Эйлера в степень x |
| sin(x) | синус аргумента x , параметр x задается в радианах |
| cos(x) | косинус аргумента x , параметр x задается в радианах |
| tan(x) | тангенс аргумента x , параметр x задается в радианах |
| cotan(x) | котангенс аргумента x , параметр x задается в радианах |
| asin(x) , arcsin(x) | возвращает арксинус аргумента x в радианах |
| acos(x) , arccos(x) | возвращает арккосинус аргумента x в радианах |
| atan(x) , arctan(x) | возвращает арктангенс аргумента x в радианах |
| acotan(x) , arccotan(x) | возвращает арккотангенс аргумента x в радианах |
| sinh(x) | гиперболический синус аргумента x |
| cosh(x) | гиперболический косинус аргумента x |
| tanh(x) | гиперболический тангенс аргумента x |
| asinh(x) , arcsinh(x) | гиперболический арксинус аргумента x |
| acosh(x) , arccosh(x) | гиперболический арккосинус аргумента x |
| atanh(x) , arctanh(x) | гиперболический арктангенс аргумента x |
| sec(x) | секанс аргумента x |
| cosec(x) | косеканс аргумента x |
| round(x) | возвращает округленное значение x |
| ceil(x) | округляет x в большую сторону |
| floor(x) | округляет x в меньшую сторону |
| sgn(x) | «сигнум» — знак аргумента x возвращает -1 при x < 0 , 0 при x = 0 , 1 при x >0 |
© OddLabs, 2011-2023 | Правильность результатов не гарантируется
Как построить трехмерный график
Постройте график функции двух независимых переменных, на котором значения функции представляют координаты Z.
1. Задайте функцию двух независимых переменных.
2. Нажмите клавиши Ctrl+3, чтобы вставить 3D-график, и введите f в местозаполнитель выражения для оси.

График функции двух независимых переменных имеет вид поверхности.
3. Измените деления оси Y, чтобы показать диапазон (5, 20), и измените параметры Заливка поверхности (Surface Fill) и Цвет кривой (Trace Color) .

4. Удалите каждое измененное значение деления, чтобы восстановить значения делений по умолчанию.

Построение графика для матрицы, созданной из функции
1. Используйте встроенную функцию matrix , чтобы создать набор данных на основе предыдущей функции.

2. Постройте график матрицы и измените параметры Заливка поверхности (Surface Fill) и Цвет кривой (Trace Color) .

На этом графике отображаются значения функции от 0 до 9 по оси X и по оси Y.
3. Измените деления по оси Y, чтобы отображать диапазон (5, 20).

На графике отображается диапазон, выходящий за пределы матрицы. На графике не отображаются значения, находящиеся вне пределов матрицы.
Как строить трехмерные графики
Следующим шагом мы с вами рассмотрим возможности построения трехмерных графиков в пакете matplotlib. Такая возможность появилась, начиная с версии 0.99, поэтому убедитесь, что ваш пакет поддерживает трехмерные графики.
Все дополнительные классы для работы в 3D находятся в модуле:
и вначале мы его импортируем в нашу программу наряду с самим пакетом matplotlib и numpy:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D
А, затем, создадим трехмерную систему координат:
fig = plt.figure(figsize=(7, 4)) ax_3d = Axes3D(fig) plt.show()
При выполнении этой простой программы, мы в окне увидим три пространственные оси, которые можно вращать с помощью курсора мышки:

Того же самого результат можно добиться, используя параметр projection при создании системы координат:
fig = plt.figure(figsize=(7, 4)) ax_3d = fig.add_subplot(projection='3d')
Как именно создавать трехмерные оси, зависит от вашего выбора и удобства при написании конкретных программ. Я остановлюсь на втором способе.
- plot() – линейный 2D график в трех измерениях;
- step() – ступенчатый 2D график в трех измерениях;
- scatter() – точеный график 3D график.
- plot_wireframe() – построение каркасной поверхности в 3D;
- plot_surface() – построение непрерывной 3D поверхности.
x = np.linspace(0, 10, 50) z = np.cos(x) ax_3d.plot(x, x, z)

То есть, мы здесь по координатам x, y выбираем одни и те же значения, а координата z (вертикаль) – это значение функции. Давайте подпишем оси, чтобы видеть, где какая расположена на этом графике:
ax_3d.set_xlabel('x') ax_3d.set_ylabel('y') ax_3d.set_zlabel('z')
Но то, что мы получили, это не совсем трехмерный график. Скорее, это двумерная косинусоида в трех измерениях. Давайте построим настоящее трехмерное изображение, например, вот такой функции:
Первое, что нам здесь нужно сделать – это сформировать двумерную сетку координат по осям x и y:
То есть, должны быть сформированы двумерные массивы x, y, которые для текущей точки с индексами (i, j) возвращают ее координаты в плоскости xy. Для регулярных сеток эти массивы можно сформировать следующим образом. Определим множество координат x (для столбцов) и y (для строк), например, так:
x = [1, 2, 3] y = [2, 5, 6, 8]
А, затем, используя функцию meshgrid() сформируем регулярную сетку на основе этих данных:
xgrid, ygrid = np.meshgrid(x, y)

На выходе получим двумерные массивы со значениями: То есть, смотрите, теперь для любой пары индексов (i, j) мы легко сможем получить координаты точки в плоскости xy:
(xgrid[1, 2], ygrid[1, 2]) = (3, 5) (xgrid[3, 0], ygrid[3, 0]) = (1, 8)

Но зачем было так все усложнять? Почему бы не использовать одномерные массивы x, y вместо двумерных xgrid, ygrid? Дело в том, что одномерные массивы, которые описывают расположение строк и столбов, могут формировать только регулярные сетки, то есть, прямоугольные. А что, если нужно сформировать гексагональную сетку, которая выглядит, следующим образом: Здесь уже не получится обойтись указанными одномерными массивами, а нужно прописывать узлы двумерными массивами. Именно поэтому, в общем случае, и реализовано отображение через двумерные массивы трехмерных графиков. Итак, давайте теперь построим полноценный трехмерный график синусоиды на регулярной сетке. Для этого мы сначала сформируем координаты узлов в плоскости xy:
x = np.arange(-2*np.pi, 2*np.pi, 0.2) y = np.arange(-2*np.pi, 2*np.pi, 0.2) xgrid, ygrid = np.meshgrid(x, y)
А, затем, вычислим значения синусоиды в этих узлах:
zgrid = np.sin(xgrid) * np.sin(ygrid) / (xgrid * ygrid)
Если для вывода такого графика воспользоваться функцией plot_wireframe():
ax_3d.plot_wireframe(xgrid, ygrid, zgrid)

то результат будет следующий: Как видите, мы получили полноценный каркасный трехмерный график синусоиды. Или же можно построить полноценную поверхность в виде синусоиды, используя функцию plot_surface():
ax_3d.plot_surface(xgrid, ygrid, zgrid)
Фактически, только этим две эти функции и отличаются друг от друга: первая строит 3D-каркас, а вторая 3D-поверхность. У этих функций есть следующие параметры для настройки внешнего вида графика:
| Параметр | Описание |
| x, y, z | 2D массивы для построения трехмерных графиков. |
| rcount, ccount | Максимальное число элементов каркаса по координатам x и y (по умолчанию 50). |
| rstride, cstride | Величина шага, с которым будут выбираться элементы из массивов x, y (параметры rstride, cstride и rcount, ccount – взаимоисключающие). |
| color | Цвет графика |
| cmap | Цветовая карта графика |
Например, если установить параметры:
ax_3d.plot_surface(xgrid, ygrid, zgrid, rstride=5, cstride=5, cmap='plasma')

то получим следующий вид нашей синусоиды: В заключение этого занятия приведу пример построения этого же графика набором точек, используя функцию scatter():
ax_3d.scatter(xgrid, ygrid, zgrid, s=1, color='g')

Увидим следующий результат: Вот так в базовом варианте можно выполнять построения трехмерных графиков в пакете matplotlib. Этой информации достаточно для большинства прикладных задач. Ну а если потребуется реализовать что-то особенное, тогда прямой путь к документации: https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html
1.4.7. Трехмерные графики MathCAD 12 руководство
Коллекция трехмерных графиков — настоящее чудо, которое Mathcad дарит пользователю. За считанные секунды вы можете создать великолепную презентацию результатов своих расчетов. Рамки данной книги не позволяют описать технику их создания и форматирования подробно, поэтому мы ограничимся лишь вводными замечаниями и простыми примерами, которые помогут ориентироваться в дальнейшем материале. Для этого рассмотрим на простом примере функции z(x,y) и матрицы z (они заданы в листингах 1.22 и 1.23 соответственно) технику построения трехмерных графиков различных типов
Чтобы создать трехмерный график, требуется нажать кнопку с изображением любого из типов трехмерных графиков на панели инструментов Graph (График). В результате появится пустая область графика с тремя осями (рис. 1.34) и единственным местозаполнителем в нижнем левом углу. В этот местозаполнитель следует ввести либо имя z функции z(x,y) двух переменных для быстрого построения трехмерного графика (рис. 1.35), либо имя матричной переменной z, которая задаст распределение данных zx,Y на плоскости XY (рис. 1.36). Еще раз отметим, что для получения графиков (и этих, и последующих) не требуется никакого текста, кроме соответствующего листинга и введения имени соответствующей функции или матрицы в местозаполнитель.
Рис. 1.34. Создание трехмерного графика
Листинг 1.22. Функция для быстрого построения трехмерных графиков
Листинг 1.23. Матрица для отображения на трехмерных графиках
Помимо трехмерных графиков поверхности, нажатие соответствующих кнопок на панели Graph (График) приводит к созданию графика линий уровня (рис. 1.37), трехмерной гистограммы (рис. 1.38), трехмерного распределения точек (рис. 1.39) или векторного поля (рис. 1.40). Все эти графики представляют данные, составленные листингами 1.22 и 1.23.
Рис. 1.35. Быстрое построение графика поверхности функции (продолжение листинга 1.22)
Рис. 1.36. График поверхности, заданный матрицей (продолжение листинга 1.23)
Форматирование трехмерных графиков выполняется с помощью диалогового окна 3-D Plot Format (Форматирование 3-D графика), которое вызывается двойным щелчком мыши.
Рис. 1.37. Быстрое построение графика линий уровня (продолжение листинга 1.22)
Рис. 1.38. Быстрое построение трехмерной гистограммы (продолжение листинга 1.22)
Рис. 1.39. Быстрое построение графика трехмерного распределения точек (продолжение листинга 1.22)
Рис. 1.40. Два графика векторных полей, заданных матрицами (продолжение листинга 1.23)
