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()