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

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

  • автор:

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

Логарифмический масштаб используется для координатных осей 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 — горизонтальных.

В примере создаются два подокна, в левом использована функция 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;

>> x=0:0.1:4; % Аргумент х

>> y=sin(x.^2).*exp(-x); % Функция у

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

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

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

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

>> x=-2:0.1:2; % Вектор х

>> y=sin(x); % Функция y

>> e=rand(size(x))/10; % Функция e

>> errorbar(x,y,e); % Функция errorbar

Делаем логарифмический масштаб у координатных осей

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

Например, если сформировать график функции:

Если отобразить его в линейной системе координат:

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.

Логарифмический график

Еще

Хочу рассказать об одной важной вещи, которую должен знать каждый начинающий инвестор.

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

Приведу определение логарифмического графика из Википедии:

«Логарифмический масштаб (шкала) — шкала, длина отрезка которой пропорциональна логарифму отношения величин, отмеченных на концах этого отрезка, в то время как на шкале в линейном масштабе длина отрезка пропорциональна разности величин на его концах»

Если вы не учились на физ-мате, для вас это наверняка звучит как полная белиберда, собственно, как и для меня. Поэтому объясню своими словами.

Есть два вида графиков: линейный и логарифмический.

Первый вы все знаете: у него вертикальная шкала растет линейно, например, 0, 10, 20, 30, 40 и т.д. Т.е. шкалу задает величина между нулем и первым значением (абсолютный прирост в единицах, в примере – 10 единиц).

Со вторым интереснее: здесь рост нелинейный (геометрический), например, 0, 10, 20, 40, 80 и т.д. Тут шкалу задает относительный (процентный) прирост. В моем примере это рост в каждом периоде на 100%.

Разница в том, что логарифмический график более адекватно показывает относительный прирост. Т.е. в моем примере выше с логарифмическим графиком каждый год (пусть 0 — цена в первый год, 10 — во второй, 20 — в третий и т.д.) цена росла на 100%. И на графике это будет прямой трендовой линией.

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

Чтобы наглядно это увидеть я привел несколько сравнений линейных и логарифмических графиков одних и тех же активов. Я взял данные по S&P 500, Татнефти и Новатэку и McDonald’s из Investing.com.

Логарифмический график
Логарифмический график
Логарифмический график
Логарифмический график

Если на графиках Татнефти и Новатэка эффект выражен не так сильно ввиду недолгого периода существования Московской биржи (хотя тоже существенен), то на американских графиках (S&P 500 и McDonald’s) разница очевидна. Посмотрите на McDonald’s: на линейном графике кажется, как будто люди с ума сошли: покупают невероятно выросший актив. В то же время складывается ощущение, что раньше McDonald’s вообще не рос и не представлял инвестиционной привлекательности (до 1990 года).

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

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

  • Ключевые слова:
  • логарифмический график,
  • долгосрочные инвестиции

Как создать логарифмический график в Excel

Как создать логарифмический график в Excel

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

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

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

Пример: логарифмический график в Excel

Предположим, у нас есть следующий набор данных в Excel, который показывает значения двух переменных, x и y:

Используйте следующие шаги, чтобы создать логарифмический график для этого набора данных:

Шаг 1: Создайте диаграмму рассеяния.

Выделите данные в диапазоне A2:B11 .

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

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

Шаг 2: Измените шкалу оси x на логарифмическую.

Щелкните правой кнопкой мыши значения вдоль оси x и выберите « Формат оси» .

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

Логарифмическая шкала для графика в Excel

Шаг 3: Измените шкалу оси Y на логарифмическую.

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

Логарифмический график в Excel

Обратите внимание, что ось x теперь охватывает от 1 до 10, а ось y — от 1 до 1000. Также обратите внимание, что связь между переменными x и y теперь выглядит более линейной. Это указывает на то, что две переменные действительно имеют степенную зависимость.

Вы можете найти больше учебников по Excel здесь .

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

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