Matplotlib: Логарифмические и пользовательские шкалы

Matplotlib: Логарифмические и пользовательские шкалы


import numpy as np

import matplotlib.pyplot as plt

from matplotlib.ticker import LogLocator, LogFormatter


# Пример log-log: y = x^2 на логарифмической сетке

x = np.logspace(-3, 3, 400)

y = x**2

fig, ax = plt.subplots()

ax.plot(x, y)

ax.set_xscale('log') # логарифмическая шкала по X

ax.set_yscale('log') # логарифмическая шкала по Y

# Настраиваем деления и формат меток

ax.xaxis.set_major_locator(LogLocator(base=10.0))

ax.xaxis.set_major_formatter(LogFormatter(base=10))

ax.grid(True, which='both', ls='--', lw=0.5)

plt.title('Log-log plot')

plt.show()


# Пример пользовательской шкалы: «function scale» — forward и inverse функции

from math import sqrt


def forward(x):

# отображение данных в пространство шкалы

return np.sqrt(x)


def inverse(x):

# обратное отображение из шкалы в данные

return x ** 2


fig, ax = plt.subplots()

# рисуем данные в исходных единицах

xs = np.linspace(0, 100, 200)

ax.plot(xs, xs**2)

# применяем пользовательскую шкалу по Y

ax.set_yscale('function', functions=(forward, inverse))

ax.set_title('Function scale: sqrt')

ax.grid(True)

plt.show()


Report Page