Как построить график в логарифмическом масштабе
Перейти к содержимому

Как построить график в логарифмическом масштабе

  • автор:

 

Графика в логарифмическом масштабе

Логарифмический масштаб используется для координатных осей X и Y.

Определены 3 функции:

loglog – логарифмический масштаб по осям х и у,

semilogx – логарифмический масштаб только по оси х и линейный по оси y,

semilogy – логарифмический масштаб только по оси y и линейный по оси х.

На рисунке представлен график функции exp(x)/x в логарифмическом масштабе. Координатная сетка строится командой grid on.

>> x=logspace(-1,3); % Аргумент x

>> loglog(x,exp(x)./x); % По осям x и y лог масштаб

>> grid on % Добавление координатной сетки

Неравномерное расположение линий координатной сетки указывает на логарифмический масштаб осей.

Столбцовые диаграммы

Функции для построения диаграмм:

bar(X, Y) – столбцовый график элементов массива Y в позициях, определяемых вектором X

bar(X) – то же, но для построения используется вектор x=1:m;

bar(X, Y, WIDTH) или bar(Y, WIDTH) – то же, но со спецификацией ширины столбцов (по умолчанию WIDTH = 0,8).

Применяются для решения задач в области финансов, экономики, математики.

Эти функции отображают данные в виде столбцов:

В примере создаются два подокна, в левом использована функция bar, в правом barh

>> x = -2.9:0.2:2.9; % Аргумент х

>> Y= exp(-x.*x); % Функция Y

>> subplot(1,2,1); % Подокно 1 в первой строке

>> grid on; % Включить сетку

>> subplot(1,2,2); % Подокно 2 в первой строке

>> grid on; % Включить сетку

Гистограммы

Функция hist(y,x) – столбцовая диаграмма, показывающая число попаданий случайных у в заданный интервал х.

hist(Y) – возвращает вектор чисел попаданий для 10 интервалов, выбираемых автоматически hist(y,x)

>> x = -3:0.2:3; % Вектор х

>> y= randn(1000,1); % Случайные у

>> grid on; % Включить сетку

Лестничные графики

Функция stairs отображает график по вычисленным значениям в ступенчатой форме с огибающей, представленной функцией y(x) . Между вычисленными точками рисуется горизонтальная линия.

>> x = -3:0.2:3; % Вектор х

>> stairs(x,x.^2); % График

>> grid on; % Включить сетку

Графики дискретных отсчетов функции

Функция stem отображает значения в виде столбиков, на вершине которых имеется маркер — кружок. Отображается и нулевая линия.

stem(Y) – строит график функции с ординатами в векторе Y в виде отсчетов;

stem(X, Y) – строит график отсчетов с ординатами в векторе Y и абсциссами в векторе X;

>> grid on; % Включить сетку

График с зонами погрешности

Функция errorbar(x,y,e) рисует график с зонами погрешности. Линия е использует линию y, как ось. Зоны погрешности отображаются в вычисляемых точках и имеют вид вертикальных полосок с горизонтальными ограничителями в обе стороны линии y c высотой, равной модулю e.

В примере для пояснения действия функции errorbar в одном окне сначала рисуются исходные функции (y, e), а затем добавляется errorbar.

Использование библиотеки Matplotlib. Как установить логарифмический масштаб по осям

Иногда нужно отображать данные, которые имеют большую разницу между максимальным и минимальным значениями функции. Если попытаться нарисовать такую функцию в обычном линейном масштабе, то мелкие детали функции могут быть плохо различимы. В таких случаях используют логарифмический масштаб по одной или обеим осям.

Сначала продемонстрируем проблему, построив график функции, приведенной ниже, в линейном масштабе.

Скрипт для построения графика этой функции с помощью функции plot() выглядит следующим образом:

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X
xmin = — 50.0
xmax = 50.0

# Количество точек на графике
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )

# Вычислим значение функции в заданных точках
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

# Создадим новую фигуру
figure , axes = plt. subplots ( )

# Добавление графика
axes. plot ( x , y )
axes. set_xlim ( xmin , xmax )
axes. set_ylim ( 0 , 1 )
axes. grid ( )
plt. show ( )

Дальнейшие примеры будут являться модификацией этого скрипта. График приведенной выше функции в линейном масштабе выглядит следующим образом:

Значение функции быстро убывает по экспоненте и поэтому в таком виде сложно оценить величины дальних боковых лепестков (локальных подъемов) функции.

Использование функций semilogx() / semilogy()

Теперь сделаем так, чтобы по оси Y был не линейный, а логарифмический масштаб (логарифм будет по основанию 10). Для этого достаточно заменить функцию plot() на semilogy(). Если же нам нужен был логарифмический масштаб только по оси X, то нужно было бы использовать функцию semilogx(), для построения графика с использованием логарифмического масштаба по обеим осям предназначена функция loglog()).

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = — 50.0
xmax = 50.0
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

figure , axes = plt. subplots ( )

# . Строим график в логарифмическом масштабе по оси Y
axes. semilogy ( x , y )

axes. set_xlim ( xmin , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Теперь та же функция на графике будет выглядеть более наглядно.

Обратите внимание на значения около рисок по оси Y. Теперь уже можно более детально разглядеть боковые лепестки этой функции и оценить их величины.

Также обратите внимание, что в этом примере изменен вызов функции set_ylim(), предназначенной для установки интервала отображения графика (про изменение интервала по осям читайте статью Как изменять интервал осей). Поскольку логарифм от 0 не определен, в качестве минимального значения в функции set_ylim() передается None, чтобы библиотека Matplotlib сама определила, какое минимальное значение использовать.

Использование функций set_xscale() / set_yscale()

Того же самого эффекта можно добиться, если по-прежнему использовать функцию plot() для построения графика, а затем изменить масштаб по оси Y с помощью функции (метода) set_yscale() экземпляра класса matplotlib.axes.Axes. Эта функция ожидает один обязательный параметр value, который может принимать три строковых значения:

  • «linear» — график по оси будет отображаться в линейном масштабе.
  • «log» — график по оси будет отображаться в логарифмическом масштабе.
  • «symlog» — график вблизи нуля будет отображаться в линейном масштабе, а далее в логарифмическом (про этот режим еще поговорим отдельно).

Разумеется, существует аналогичный метод set_xscale() для установки логарифмического масштаба по оси X.

Изменим предыдущий пример, чтобы показать использование функции set_yscale().

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = — 50.0
xmax = 50.0
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по оси Y
axes. set_yscale ( ‘log’ )

axes. set_xlim ( xmin , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Результат будет такой же, как и на предыдущей картинке. В дальнейших примерах мы в основном будем использовать второй подход, хотя необязательные параметры, которые мы будем передавать в функции set_xscale() и set_yscale() можно передавать и в функции semilogx() / semilogy().

Изменение положений промежуточных рисок

Если вы хорошенько присмотритесь к вертикальной оси на последней картинке, то увидите, что между главными рисками (major ticks) есть промежуточные риски (minor ticks), расставленные с шагом 1 * 10 n , то есть по умолчанию между рисками 10 -1 и 10 -2 есть риски 0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03 и 0.02. Можно изменить количество и положения рисок, добавив в вызов метода set_yscale именованный параметр subs, который должен быть списком целых чисел. Например, если мы хотим оставить промежуточные риски только на значениях 0.02 и 0.05, то этот параметр должен быть равен [2, 5]. Это продемонстрировано в следующем примере.

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = — 50.0
xmax = 50.0
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по оси Y
# . и устанавливаем промежуточные риски на значениях 2 и 5.
axes. set_yscale ( ‘log’ , subs = [ 2 , 5 ] )

axes. set_xlim ( xmin , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Результат показан на следующем рисунке:

Того же результата можно добиться при использовании аналогичного параметра subs, если строить график с помощью метода semilogy():

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = — 50.0
xmax = 50.0
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

figure , axes = plt. subplots ( )

# . Строим график в логарифмическом масштабе по оси Y
# . и устанавливаем промежуточные риски на значениях 2 и 5.
axes. semilogy ( x , y , subs = [ 2 , 5 ] )

axes. set_xlim ( xmin , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Изменение основания логарифма

С помощью именованного параметра base функций set_xscale() / set_yscale() (а также semilogx() и semilogy()) можно устанавливать основание логарифма в логарифмическом масштабе. По умолчанию используется основание 10, но мы можем изменить его, например, на 2, что и показано в следующем примере.

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = — 50.0
xmax = 50.0
count = 1001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) ) * np. exp ( -np. abs ( x / 10 ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по основанию 2 по оси Y
axes. set_yscale ( ‘log’ , base = 2 )

axes. set_xlim ( xmin , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Результат выглядит следующим образом:

Объединение линейного и логарифмического масштабов

Как было сказано выше, функции set_xscale() / set_yscale(), в качестве обязательного параметра могут принимать строку symlog. Чтобы продемонстрировать влияние этого параметра изменим отображаемую функцию и интервал, где она рисуется. Пусть функция f(x) = |sinc(x / π)| рисуется по оси X на отрезке [0; 500], в этом случае есть смысл установить логарифмический масштаб по оси X, тогда скрипт и соответствующий график будут выглядеть следующим образом:

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = 0.0
xmax = 500.0
count = 5001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по оси X
axes. set_xscale ( ‘log’ )

axes. set_xlim ( None , xmax )
axes. set_ylim ( 0 , 1 )
axes. grid ( )
plt. show ( )

Значение symlog (сокращение от слов «symmetrical log») параметра функций set_xscale() / set_yscale() позволяет сделать так, чтобы на части оси график имел линейный масштаб, а на части — логарифмический. Линейный масштаб может быть только вблизи нуля. Эта возможность полезна, чтобы избежать бесконечных значений вблизи нуля. Дополнительный параметр linthresh позволяет установить, от 0 до какого значения масштаб должен быть линейным.

Изменим предыдущий пример таким образом, чтобы от 0 до 5 масштаб был линейным, а далее становился логарифмическим.

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = 0.0
xmax = 500.0
count = 5001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по оси X
axes. set_xscale ( ‘symlog’ , linthresh = 5 )

axes. set_xlim ( 0 , xmax )
axes. set_ylim ( 0 , 1 )
axes. grid ( )
plt. show ( )

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

Там, где на графике виден излом, это и есть точка x = 5.

С помощью необязательного параметра linscale можно установить, насколько будет растянут интервал с линейным масштабом. Следующий пример делает линейную часть оси в три раза длиннее (при этом координата точки перехода от линейного к логарифмическому масштабу останется равной x = 5).

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = 0.0
xmax = 500.0
count = 5001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по оси X
axes. set_xscale ( ‘symlog’ , linthresh = 5 , linscale = 3 )

axes. set_xlim ( 0 , xmax )
axes. set_ylim ( 0 , 1 )
axes. grid ( )
plt. show ( )

Логарифмический масштаб по обеим осям

И в завершении статьи посмотрим, как работает функция loglog для установки логарифмического масштаба по обеим осям.

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = 0.0
xmax = 500.0
count = 5001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) )

figure , axes = plt. subplots ( )

# . Строим график в логарифмическом масштабе по обоим осям
axes. loglog ( x , y )

axes. set_xlim ( None , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

В результате функция f(x) = |sinc(x / π)| в таких осях будет выглядеть следующим образом:

Того же самого результата можно добиться с использованием методов set_xscale() и set_yscale() одновременно:

import numpy as np
import matplotlib. pyplot as plt

# Интервал изменения переменной по оси X и количество точек
xmin = 0.0
xmax = 500.0
count = 5001

# Создадим список координат по оси X на отрезке [xmin; xmax)
x = np. linspace ( xmin , xmax , count )
y = np. abs ( np. sinc ( x / np. pi ) )

figure , axes = plt. subplots ( )

# Строим график
axes. plot ( x , y )

# . Устанавливаем логарифмический масштаб по обеим осям
axes. set_xscale ( ‘log’ )
axes. set_yscale ( ‘log’ )

axes. set_xlim ( None , xmax )
axes. set_ylim ( None , 1 )
axes. grid ( )
plt. show ( )

Двумерные графики функций в MathСad

В этом уроке мы рассмотрим типы графиков, которые есть в PTC Mathcad.

Типы графиков

Для изменения типа графика нужно нажать на него и выбрать на вкладке Графики -> Кривые -> Изменить тип. Далее представлены четыре типа графиков, которые можно использовать для функций:

В этом списке вы можете увидеть некоторые типы осей. О них мы поговорим несколько позднее.

Несколько графиков на одних осях

Для добавления кривой на оси разместите курсор мыши на место, где заканчивается обозначение легенды оси Y графика и выберите Графики -> Кривые -> Добавить кривую. Появится дополнительное место для заполнения оси Y.

С помощью этой же команды можно добавлять и другие графики.

Используя вывод нескольких графиков, мы рассмотрим различные варианты вывода, которые доступны в меню Графики -> Стили. Для этого мы пропишем графики, которые будут содержать пять различных прямых линий. В каждой из них будет содержаться 11 точек.

После ввода этих выражений добавьте график XY и после в него четыре легенды для Y. В заполнении для оси Х введите X[i и нажмите [Enter]. Все наши графики будут использовать одну и ту же легенду для оси X. Для последнего места для заполнения оси Y введите y[0,i и нажмите [Enter].

Выше нужно ввести y[1,i , еще выше — y[2,i и дальше по тому же принципу. После вы увидите пять прямых линий, которые будут построены на осях. Каждой из них можно присвоить свое свойство, выбирая его в меню Графики -> Стили.

Ниже вы можете видеть те графики, которые получились. В качестве настроек стиля использовались различные цвета, символы, толщина линии.

Сами метки и присвоенные им значения были исключены в меню Графики -> Оси.

Масштабирование

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

Для исправления этого разделите функцию куба на 5. Такой прием носит имя масштабирование.

Маркеры

Для того чтобы выяснить точные значения по графику, можно пользоваться маркерами из меню Графики -> Маркеры. Стили, которые используются для построения линий маркеров, можно менять так же как и стили графиков.

Кривая «Столбцы»

Поговорим о типе кривой «Столбцы». Воспользуемся таблицей с данными. Перейдем во вкладку Матрицы/таблицы -> Вставить таблицу и в сетке выберем таблицу с 2 столбцами и 10 строчками

Местозаполнители заголовков заполните значениями х и у, а числа заполните так, как изображено на рисунке ниже:

Разместите график XY. Сделайте график визуально более привлекательным, используя перемещение легенды по осям и форматирование значения меток. Для изменения типа графика выберите Графики -> Кривые -> Изменить тип -> Кривая «столбцы».

Таблицу данных при работе с Mathcad удобнее использовать, когда данных не так много. Если данных намного больше, то лучше совместить использование Mathcad с Excel.

Полярный график

Давайте пропишем график спирали, который будет позиционироваться в полярных координатах.

 

Разместите полярный график с помощью Графики -> Кривые -> Вставить график -> Полярный график. В местозаполнители введите такие данные, как можете видеть на рисунке и нажмите на клавишу [Enter].

Параметрический график

Для построения этого графика окружности нужно использовать параметр t

Графики в логарифмическом масштабе

В науке и технике часто находит применение логарифмический масштаб. В Mathcad Есть возможность построения и такого типа графиков.

Давайте построим график функции y=x­ 2 , но будем использовать при этом параметр:

Для того, чтобы выполнить ось X в виде логарифмической оси, нужно легенду оси X выделить и нажать Графики -> Оси -> Логарифмический масштаб. Это же выполните и для оси Y. В логарифмическом масштабе функция будет выглядеть как прямая линия.

Резюме

Этот урок научил нас использовать модификации для двухмерных графиков.

  1. Для изменения типа кривой нужно нажать на легенду по Y и выбрать Графики -> Кривые -> Изменить тип.
  2. Для добавления кривой нужно разместить курсор на легенду оси Y и выбрать Графики -> Кривые -> Добавить кривую/
  3. Для изменения внешнего вида лини графиков необходимо выбрать стиль во вкладке Графики -> Стиль, предварительно нажав на необходимую легенду/
  4. Для масштабирования графика необходимо разделить легенду нужно оси на коэффициент масштабирования.
  5. Линии маркеров, как вертикальные, так и горизонтальные, можно найти в разделе Графики -> Маркеры. Добавлять можно любое количество маркеров, вплоть до того, что строить из них сетку. Изменение маркеров доступно так же, как и любых других графиков.
  6. Полярный график размещается так же, как и график XY. Для этого зайдите в Графики -> Кривые -> Вставить график -> Полярный график.
  7. Изменение масштаба оси на логарифмический доступно с применением команды. Для ее выбора нажмите Графики -> Оси -> Логарифмический масштаб. Выполнять изменения нужно для каждой из осей. При выполнении изменения лишь для одной оси, вы получите логарифмический масштаб.
  • Назад
  • Вперед

Уважаемые пользователи, хотим Вас проинформировать о том, что некоторые антивирусные программы и браузеры ложно срабатывают на дистрибутив программы MediaGet, считая его зараженным. Данный софт не содержит никаких вредоносных программ и вирусов и многие из антивирусов просто Вас предупреждают, что это загрузчик (Downloader). Если хотите избежать подобных проблем, просто добавьте MediaGet в список доверенных программ Вашей антивирусной программы или браузера.

Выбрав нужную версию программы и кликнув ссылку, Вам на компьютер скачивается дистрибутив приложения MediaGet, который будет находиться в папке «Загрузки» для Вашего браузера. Находим этот файл с именем программы и запускаем его. И видим первый этап установки. Нажимаем унопку «Далее»

Далее Вам предлагается прочитать и одобрить лицензионное соглашение. Нажимаем кнопку «Принимаю»

В следующем окне Вам предлагается бесплатное полезное дополнительное программоное обеспечение, будь то антивирус или бразуер. Нажимаем кнопку «Принимаю». Также Вы можете отказаться от установки дополнительного ПО, нажав кнопку «Отклоняю»

Далее происходит процесс установки программы. Вам нужно выбрать папку, в которую будут скачиваться нужные Вам файлы.

Происходит завершение установки. Программа автоматически открывается и скачивает нужные Вам исходные файлы.

Обратите внимание, что предоставляемое программное обеспечение выкладывается исключительно для личного использования и ознакомления. Все файлы, доступные для скачивания, не содержат вирусов и вредоносных программ.

Логарифмический масштаб matlab

Для построения графиков в логарифмическом и полулогарифмическом масштабах служат функции:

? loglog (логарифмический масштаб по обеим осям);

U semilogx (логарифмический масштаб только по оси абсцисс);

? semilogy (логарифмический масштаб только по оси ординат).

Аргументы loglog, semilogx И semilogy задаются U ВИДЄ пары векторов значении абсцисс и ординат так же, как для функции plot, описанной в предыдущем разделе. Глава 3. Высокоуровневая графика

Постройте, например, графики функций /(.v)= In 0.5.v и g (л) = sin In хна отрезке [0.1, 5) в логарифмическом масштабе по оси .г:

» f = log(0.5*х); » g = sin(log(x>); » semilogxtx, f, х ,g>

Получающиеся графики изображены на рис. 3,21.

Рис. 3.21. Графики в полулогарифмической шкале Функции Ioglog и semilogy вызываются аналогичным образом.

Изменение свойств линий

Построенные графики функций должны быть максимально удобными для восприятия. Часто требуется нанести маркеры, изменить цвет линий, а при подготовке к монохромной печати — задать тип линии (сплошная, пунктирная, штрих-пунктирная и т. д.). MATLAB предоставляет возможность управлять видом графиков, построенных при ПОМОЩИ plot, loglog, semilogx и semilogy, для чего служит дополнительный аргумент, помещаемый за каждой парой векторов. Этот аргумент заключается в апострофы и состоит из трех символов, которые определяют: цвет, тип маркера и тип линии. Используются одна, две или три позиции, в зависимости от требуемых J 134

Часть I, Основы работы в MATLAB

изменений. В табл. 3.] приведены возможные значения данного аргумента с указанием результата.

Таблица, 3.1. Свойства линии

Цвет Тип маркера Тип линии
у желтый точка — сплошная
m розовый о кружок пунктирная
с голубой к крестик штрих-
пунктирная
г красный + знак «плюс» — штриховая
g зеленый * звездочка
ь синий S квадрат
W белый d ромб
к черный V треугольник
вершиной вниз
треугольник
вершиной вверх
треугольник
вершиной впра-
во
P пятиконечная
звезда
h шестиконечная
звезда

Например, для построения первого графика (рис. 3.19) красными точечными маркерами без линии, а второго пунктирной черной линией следует использовать команду plot (хг f, ‘г.’, х, д, ‘ к: •). Результат приведен на рис. 3.22. Обратите внимание, что абсциссы маркеров совпадают со значениями аргумента, содержащимися в х. Это не всегда хорошо, ведь для получения гладкой кривой требуется вычислить вектор значений функции в достаточно большом числе точек, что приводит к слишком частому расположению маркеров или даже их перекрытию. Простой прием позволяет по- Глава 3. Высокоуровневая графика

местить маркеры в заранее выбранные позиции. Строится два графика функции, один — сплошной линией, а второй — только маркерами для небольшого набора значений аргумента:

» у — sin(2*рі*х.Л2); » xm = -1:0.2:1; » ym = sin(2*pi*xm.n2) ,-» plot(x, у, ‘k’, xm, ym, ‘ко’)

2.5 7 1.5 — J 4* *
1 ¦ • ; !, «
0.6 і1* : ґ ?*’ ¦ ¦¦ ; I I1 : • » ¦ » : г • « I ¦ V :/ ¦ * і ¦ .і . .
„ > л , I-. I >,, , V . :
I * -E -4 -2 D 2 Л E I

Рис. 3.22. Изменение параметров линий

Удобство использования графиков во многом зависит от дополнительных элементов оформления: координатной сетки, подписей к осям, заголовка и легенды. Такие возможности реализуются либо с помощью дополнительных параметров, задающих свойства объектов, либо с помощью вспомогательных команд и функций. Перечислим основные из них. Сетка наносится командой geld on, функции Xlabel, уlabel служат для размещения подписей к осям, a title— для заголовка. При необходимости сопроводить график легендой следует использовать функцию legend. Все перечисленные команды применимы к графикам как в линейном, так и в логарифмическом и полулогарифмическом масштабах. Следующие команды выводят графики из- J 136

Часть I, Основы работы в MATLAB

менения суточной температуры, изображенные на рис. 3.23, которые снабжены всей необходимой информацией.

» time = [0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22); » tenpl = [14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13]; » tenp2 = [12 13 13 14 16 18 20 20 23 25 25 20 16 12 12 11 10]; » plot(time, tempi, ‘ro-‘, time, temp2, ‘go-‘) » grid on

Рис. 3.23. График изменения суточной температуры

Символы кириллицы могут неправильно отображаться в нелокализован-ной версии MATLAB. Один из способов решения проблемы заключается в изменении текстового файла matlabrc.m, находящегося в подкаталоге tool-Ьох1оса) основного каталога MATLAB. Используя любой текстовый редактор, добавьте в конец файла строку: set(0,’DcTaultAxesFonIName1jlMMai. шрифта_с_русскимн_символами’) (см. также примечание а разд. «Сервисные функции для работы со строками» главы 8). Глава 3. Высокоуровневая графика
Предыдущая 51 52 53 54 55 56 .. 349 >> Следующая

Логарифмический масштаб matlab

Обычная графика MATLAB

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

Графики в логарифмическоми полулогарифмическом масштабе

Гистограммы и диаграммы

Графики специальных типов

Создание массивов данных для трехмерной графики

Построение графиков трехмерных поверхностей, сечений и контуров

Средства управления подсветкой и обзором фигур

Средства оформления графиков

Одновременный вывод нескольких графиков

Управление цветовой палитрой

Окраска трехмерных поверхностей

Одно из достоинств системы MATLAB — обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.

Описанию графических функций и команд посвящена обширная электронная книга в формате PDF. Объем материала по графике настолько велик, что помимо вводного описания графики в уроке 3 в этой книге даются еще два урока по средствам обычной и специальной графики. Они намеренно предшествуют систематизированному описанию большинства функций системы MATLAB, поскольку графическая визуализация вычислений довольно широко используется в последующих материалах книги. При этом графические средства системы доступны как в командном режиме вычислений, так и в программах. Этот урок рекомендуется изучать выборочно или выделить на него не менее 4 часов.

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

Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB — матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.

Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже.

Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения функции которых содержатся в матрице Y, а значения аргумента х хранятся в векторе X:

На рис. 6.1 показан график функций из этого примера. В данном случае отчетливо видно, что график состоит из отрезков, и если вам нужно, чтобы отображаемая функция имела вид гладкой кривой, необходимо увеличить количество узловых точек. Расположение их может быть произвольным.

Рис. 6.1. Графики двух функций в декартовой системе координат

Вот пример использования команды plot(Y):

Соответствующий график показан на рис. 6.2.

Рис. 6.2. График функции, представляющей вектор Y с комплексными элементами

Значениями константы S могут быть следующие символы.

Логарифмический масштаб matlab

1. Построение двумерных графиков функций

В результате вычислений в системе MATLAB обычно получается большой массив данных, который трудно анализировать без наглядной визуализации. Поэтому система визуализации, встроенная в MATLAB, придаёт этому пакету особую практическую ценность.

Графические возможности системы MATLAB являются мощными и разнообразными. В первую очередь целесообразно изучить наиболее простые в использовании возможности. Их часто называют высокоуровневой графикой. Это название отражает тот приятный факт, что пользователю нет никакой необходимости вникать во все тонкие и глубоко спрятанные детали работы с графикой.

Например, нет ничего проще, чем построить график функции одной вещественной переменной. Следующие команды

x = 0 : 0.01 : 2;

y = sin( x );

вычисляют массив y значений функции sin для заданного набора аргументов.

После этого одной единственной командой

plot( x , y )

удаётся построить вполне качественно выглядящий график функции:

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

Например, команда следующего вида позволяет построить график красного цвета (‘R’), точки графика представлены звездочками (‘*’), линия графика, соединяющая эти точки является штрихпунктирной линией (‘-.’):

plot (x,у,[R,*,-.])

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

Графическое представление в виде ступенчатого графика осуществляется с помощью функции stairs, синтаксис которой аналогичен синтаксису функции plot.

Для построения двух графиков в разном масштабе в одной системе координат используется функция plotyy, которая позволяет отображать на графике 2 оси ординат. Синтаксис функции plotyy аналогичен синтаксису функции plot.

Для построения графиков в логарифмическом и полулогарифмическом масштабе используются следующие функции:

loglog – построение графика в логарифмическом масштабе;

semilogx – построение графика в полулогарифмическом масштабе по оси x;

semilogy – построение графика в полулогарифмическом масштабе по оси y.

Синтаксис функций построения графиком в логарифмическом масштабе аналогичен синтаксису функции plot.

Для оформления графиков в среде MATLABслужат следующие операторы:

title(‘inscription’)– задание титульной надписина графике (inscription– текстовая надпись, которую необходимо заключить в одинарные кавычки);

xlabel(‘inscription’) – задание надписи по оси x;

ylabel(‘inscription’)– задание надписи по оси y;

gridon– задание пунктирной масштабной сетки на графике.

В среде MATLAB существует возможность разбиения одного графического окна на несколько подграфиков, каждый из которых имеет свою систему координат. Для этого используется функция subplot,которая располагает графики в виде матрицы и имеетследующийсинтаксис:

Subplot (m, n, p)

где m – число графиков по горизонтали, n – по вертикали, p – текущая позиция графика.

Номер подграфика отсчитывается от левого верхнего угла построчно. Команда следующего вида предполагает наличие 6 подграфиков в одном графическом окне (3 по вертикали и 2 по горизонтали):

Subplot (3, 2, 4)

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

Построение графиков в логарифмическом и полулогарифмическом масштабах.

Если для одиночного графика диапазоны изменения переменных вдоль одной или обеих осей координат слишком велики, то можно воспользоваться функциями построения графиков в логарифмическом и полулогарифмических масштабах. Для этого предназначены функции semilogx (логарифмический масштаб по оси ), semilogy (логарифмический масштаб по оси ) и loglog (логарифмический масштаб по обеим осям). Синтаксис указанных функций аналогичен синтаксису функции plot: они принимают аргументы, заданные в виде пары векторов значений абсцисс и ординат.

Построим в качестве примера график функции на промежутке в логарифмическом масштабе по оси .

Будем иметь (рис. 2.9.6):

Рис. 2.9.6. График функции в логарифмическом масштабе по оси .

Построение графиков в полярных координатах.

Для построения графика функции в полярной системе координат используется команда polar, например (рис. 2.9.7):

Оформление графиков и графических окон

Функции построения графиков, рассмотренные в предыдущем параграфе осуществляли автоматическое оформление графиков. Разумеется у системы MATLAB имеются дополнительные возможности, связанные с управлением внешним видом графика – заданием цвета и стиля линий, а также размещение различных надписей в пределах графического окна.

Рис. 2.9.7. График функции в полярной системе координат.

Рис. 2.10.1. Пример маркировки точек кривой посредством окружностей.

Выбор свойств линий.

Так, например, команды (рис. 2.10.1)

plot(x, y, ‘k-‘, x, y, ‘ko’)

позволяют придать графику вид черной сплошной линии, на которой в дискретных точках, расстояние между которыми равно 0.1, проставляются черные окружности. Здесь функция plot дважды строит график одной и той же функции, но в двух разных стилях. Первый из этих стилей отмечен как “k-”, что обозначает проведение линии черным цветом (буква k), а штрих означает проведение сплошной линии. Второй стиль, помеченный как “ko”, обозначает проведение тем же черным цветом (буква k) окружностей (буква o) на месте вычисляемых точек.

В общем случае команда

позволяет определить в одном графическом окне изображения нескольких функций y1(x1),y2(x2),… используя стили s1,s2,….

Заметим, что стили s1,s2,… задаются в виде набора трех символьных маркеров (стилевой строки), один из которых задает тип линии, второй – цвет линии, а третий – тип маркера, используемого для пометки представляемых точек (таблица 2.10.1). При отсутствии указания типов маркеров используются значения, установленные по умолчанию. Отметим, что порядок, в которым указываются маркеры, задающие тип линии, цвет линии и тип точки несущественен. Если в стилевой строке задан тип маркера, но не указан тип линии, то представляемые точки маркером метятся, но не соединяются друг с другом отрезками прямых.

Более мощным способом построения графиков функций является метод дескрипторов, который относится к низкоуровневой графике MATLAB. Метод дискрипторов позволяет напрямую обратиться к базовым графическим объектам и задать его свойства. Детальное знакомство со свойствами графических объектов MATLAB выходит за рамки книги.

В этой связи приведем ниже некоторый пример, иллюстрирующий основные приемы работы с дискрипторной графикой и позволяющий продемонстрировать суть данного метода (рис. 2.10.2).

В данном случае команда plot через опорные точки проводит отрезки прямых линий с координатами x,y. Прямые линии в системе MATLAB представляют собой объекты типа line. Эти объекты имеют очень большое количество свойств и характеристик, которые можно менять. Доступ к этим объектам осуществляется посредством их дескрипторов.

Командой hplot=plot(x,y) создается графический объект и переменной hplot присваивается значение дескриптора графического объекта типа line, использованного для построения графика функции .

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *