Делаем логарифмический масштаб у координатных осей
До сих пор мы с вами отображали графики в декартовой системе с линейным шагом изменения значений. Это довольно частый вариант, который используется в большинстве случаев. Но бывают функции, которые требуют логарифмического масштаба (изменения шага) по координатам.
Например, если сформировать график функции:

Если отобразить его в линейной системе координат:
import numpy as np import matplotlib.pyplot as plt fig = plt.figure(figsize=(7, 4)) ax = fig.add_subplot() x = np.arange(-10*np.pi, 10*np.pi, 0.5) ax.plot(x, np.sinc(x) * np.exp( -np.abs(x/10)) ) ax.grid() plt.show()
То мелкие колебания функции на больших частотах будут не видны:

Как раз здесь может помочь логарифмический масштаб по оси ординат. Для этого достаточно воспользоваться методом semilogy(), чтобы по оси Oy откладывался логарифмический масштаб (логарифм по основанию 10) для графика:
ax.semilogy(x, np.sinc(x) * np.exp( -np.abs(x/10)) )
В результате получим следующее построение:

Видите, стало гораздо информативнее и конечному пользователю показывается больше информации о сигнале.
Аналогично, можно формировать логарифмический масштаб по оси ординат с помощью метода:
Того же самого эффекта можно добиться и с помощью прежней функции plot(), только дополнительно указать логарифмический масштаб по нужной оси. Например, так:
ax.plot(x, np.sinc(x) * np.exp( -np.abs(x/10)) ) ax.set_yscale('log')
Здесь был использован метод set_yscale() для изменения масштаба со значения ‘linear’ на значение ‘log’. По аналогии, можно изменить масштаб и для оси Ox с помощью метода set_xscale():
ax.set_xscale('log')
- ‘linear’ – линейный масштаб (используется по умолчанию);
- ‘log’ – логарифмический масштаб;
- ‘symlog’ – вблизи нуля (в указанных пределах) масштаб линейный, а в остальной области – логарифмический.
ax.set_yscale('log', base=5)

Вернемся к нашему графику. Если на него внимательно посмотреть, то по вертикали дополнительно отложены небольшие риски. Это восемь промежуточных линейных значений. Например, между значениями Откладываются риски со значениями: 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2 Мы можем управлять их отображением, указав их значения в виде целых чисел в списке параметра subs:
ax.set_yscale('log', subs=[2, 9])
Здесь мы указываем отображать риску со значением 0,2 или 0,02 или 0,002 и т.д. И риску со значениями 0,9 или 0,09 или 0,009 и т.д. Рассмотрим далее возможность использования третьего параметра ‘symlog’. Мы его пропишем для оси Ox в следующем виде:
x = np.arange(-10*np.pi, 10*np.pi, 0.1) ax.plot(x, np.sinc(x) * np.exp( -np.abs(x/10)) ) ax.set_xscale('symlog', linthresh=2)

Здесь использован дополнительный параметр linthresh, определяющий граничное значение [-2; 2], где график следует отображать в линейном масштабе. А все, что выходит за эти пределы – в логарифмическом. В результате, получим такое построение: Дополнительно линейный масштаб можно растянуть, указав масштаб в дополнительном параметре linscale:
ax.set_xscale('symlog', linthresh=2, linscale=5)

Наконец, если нам нужно установить логарифмический масштаб по обеим осям, то проще всего для этого воспользоваться функцией loglog(), вместо функции plot() или semilogx()/semilogy():
ax.loglog(x, np.sinc(x) * np.exp( -np.abs(x/10)) )

Вот так, достаточно просто можно задавать и управлять логарифмическим масштабом при отображении графиков в пакете matplotlib.
Как создать логарифмический график в Excel

Логарифмический график — это диаграмма рассеяния , в которой используются логарифмические шкалы как по оси X, так и по оси Y.
Этот тип графика полезен для визуализации двух переменных, когда истинная связь между ними подчиняется степенному закону. Это явление происходит во многих областях реальной жизни, включая астрономию, биологию, химию и физику.
В этом руководстве показано, как создать логарифмический график для двух переменных в Excel.
Пример: логарифмический график в Excel
Предположим, у нас есть следующий набор данных в Excel, который показывает значения двух переменных, x и y:

Используйте следующие шаги, чтобы создать логарифмический график для этого набора данных:
Шаг 1: Создайте диаграмму рассеяния.
Выделите данные в диапазоне A2:B11 .

На верхней ленте щелкните вкладку « Вставка ». В группе « Графики » нажмите « Разброс ».

Автоматически появится следующая диаграмма рассеяния:

Шаг 2: Измените шкалу оси x на логарифмическую.
Щелкните правой кнопкой мыши значения вдоль оси x и выберите « Формат оси» .

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

Шаг 3: Измените шкалу оси Y на логарифмическую.
Затем щелкните по оси Y и повторите тот же шаг, чтобы изменить шкалу оси Y на логарифмическую. Результирующий график будет выглядеть так:

Обратите внимание, что ось x теперь охватывает от 1 до 10, а ось y — от 1 до 1000. Также обратите внимание, что связь между переменными x и y теперь выглядит более линейной. Это указывает на то, что две переменные действительно имеют степенную зависимость.
Вы можете найти больше учебников по Excel здесь .
WolframAlpha для всех
Экспоненциальные кривые приобретают в логарифмической системе координат более простой вид. Wolfram|Alpha позволяет легко строить графики функций в логарифмической системе координат. Для этого нужно использовать префикс log.

Еще несколько показательных примеров:



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

При написании этой статьи я обнаружил, что при задании интервала изменения аргумента фукнкции при построении графика функции в логарифмической системе координат в системе Wolfram|Alpha возникают проблемы.
Логарифмические координаты как построить
В России нет роста заболеваемости коронавирусом по экспоненте. прирост составляет около 1800-1900 новых случаев за сутки, то есть 17-18 процентов.
Вице-премьер Татьяна Голикова в пересказе журналистов, 13 апреля 2020.
Скачайте таблицу с данными о числе выявленных случаев COVID-19 в России. Постройте график количества выявленных случаев по дате, пример:

Здесь построены два графика, на одном — обычная система координат, на другом — по оси OY выбрана логарифмическая шкала. Для того, чтобы в Libre Office Calc сделать логарифмическую шкалу, нужно построить обычный график, затем выделить построенный график, правой кнопкой мыши щёлкнуть на оси OY, выбрать в контекстном меню “Формат оси“.
Видно, что число заболевших растёт экспоненциально, в логарифмической шкале экспоненциальный рост выглядит, как прямая линия. Такая модель распространения называется моделью неограниченного роста. В модели неограниченного роста величина популяции растёт пропорционально величине самой популяции, то есть ежедневный прирост популяции равен размеру самой популяции, умноженному на коэффицицент.
Если обозначить размер популяции в день \(n\) как \(x_n\), то тогда \(x_=ax_n\), где \(a\gt1\) — коэффициент прироста.
Выполните задание. В данную таблицу добавьте столбец C —количество выявленных случаев COVID-19 в России в модели неограниченного роста. Значение коэффициента \(a\) выпишите в отдельной ячейке. Постройте два графика: с обычной шкалой и с логарифмической шкалой. На каждом из двух графиков должно быть две линии: количество выявленных случаев (реальные данные) и количество случаев в модели неограниченного роста.
Изменяя значение коэффициента \(a\) и начальный размер популяции в модели неограниченного роста, добейтесь того, чтобы графики максимально совпадали. Начальный размер популяции в модели нужно менять потому, что при малых значениях модель может быть неточной.
- Каков ежедневный прирост количества выявленных случаев в построенной модели?
- Когда будет инфицировано всё население России? Ответ должен быть получен на основе моделирования, произведённого в таблице.
B: Модель эпидемии
В городе М. проживает 15 миллионов жителей. В день ноль в город прилетает самолёт из Куршавеля, в котором 100 пассажиров и у каждого чемодан вирусов.
Продолжительность болезни составляет 14 дней, в течение 14 дней после заражения человек выздоравливает и перестает быть заразным для окружающих. Выздоровевший человек вырабатывает иммунитет и повторно не заболевает.
Количество новых заболевших в течение дня пропорционально числу встреч больных и здоровых, то есть равно \(k\times\\> \times\< \text\> \), где —это количество жителей, не заболевших до этого, — количество заболевших в течение 14 последних дней.
Известно, что в первые дни средний прирост числа заболевших составлял 20% в день. Подберите значение \(k\) исходя из этого.
Постройте модель развития эпидемии. Постройте графики числа заболевших в течение дня, числа восприимчивых и переболевших людей. Сравните число заболевших со статистическими данными.
- Сколько дней будет продолжаться эпидемия?
- На какой день будет пик развития эпидемии?
- Какое число людей заболеет в день пика развития эпидемии?
- Сколько людей переболеет в итоге?
Модели ограниченного роста и модели двух популяций
На самом деле возможности неограниченного роста у популяции нет, так как обычно возможности роста ограничены. Например, популяция волков в лесу ограничена, поскольку каждому волку для прокорма необходима некоторая территория, на которой не может прокормиться неограниченное число волков. Если ареалы обитания отдельных волков пересекаются, то объем пищи, который достается каждому из них уменьшается и уменьшается скорость роста популяции.
Введем в формулу неограниченного роста дополнительный член, замедляющий скорость роста в случае большой популяции. Будем считать, что это замедление зависит от вероятности встречи двух волков, то есть пропорционален квадрату количества волков. Получаем формулу рекуррентного соотношения для модели ограниченного роста: \[ x_=ax_n-bx_n^2. \]
Здесь значение коэффициента \(b\) должно быть существенно меньше коэффициента \(a\).
Модель ограниченного роста приводит к стабилизации численности популяции.
Рассмотрим теперь модели, в которой есть две популяции. Количество особей первой популяции обозначим \(x_n\), количество особей второй популяции обозначим \(y_n\). В модель добавим дополнительные слагаемые, учитывающие межвидовое взаимодействие. Эти слагаемые пропорциональны вероятности контакта двух видов, то есть имеют вид \(cx_ny_n\): \[ \cases=a_1x_n-b_1x_n^2+c_1x_ny_n,\cr y_=a_2y_n-b_2y_n^2+c_2x_ny_n.> \]
Рассмотрим варианты. В конкурентной модели два вида борются за общие ресурсы, встреча двух особей разных видов вредит каждому из них. В этой модели \(a_1\gt 1\), \(a_2\gt 1\), \(c_1\lt 0\), \(c_2\lt 0\).
Такая модель неустойчива и приводит к подавлению одного вида другим.
В симбиотической модели организмы-симбионты помогают друг другу. В этой модели \(c_1\gt 0\), \(c_2\gt 0\), \(b_1\gt c_1\), \(b_2\gt c_2\) (последние два неравенства нужны, чтобы избежать ситуации бесконечного роста популяций).
Эта модель приводит к стабилизации системы.
C: Модель хищник–жертва
В модели хищник–жертва имеется две популяции: жертвы и хищники, например, зайцы и волки.
Условия на коэффициенты следующие: \(a_1\gt 1\), \(a_2\lt 1\) (популяция зайцев без волков растёт, в то время как популяция волков без зайцев уменьшается); \(с_1\lt 0\), \(c_2\gt 0\) (встреча жертвы с хищником уменьшает количество жертв, но благоприятно сказывается на хищниках, т.к. это получение пищи хищником).
Модель хищник–жертва приводит к волнообразным колебаниям количества хищников и жертв, графики при этом сдвинуты относительно друг друга. Посмотрите, например, данные о заготовке пушнины в Северной Америке, добытых Компанией Гудзонова залива:
Постройте модель хищник–жертва, подберите параметры модели так, чтобы были видны волнообразные колебания. Постройте график обоих популяций.
D: Система из трёх видов
Постройте модель из трех биологических видов: растительность, травоядные, хищники. Растительность имеет фиксированный прирост (неэкспоненциальный), можно добавить отрицательный коэффициент, препятствующий неограниченному росту растительности. Травоядные поедают растительность, хищники поедают травоядных.
Постройте какие-нибудь красивые типичные графики динамики такой модели.
