Matplotlib совместно используемая ось Y - один субплот смещен - PullRequest
2 голосов
/ 07 января 2020

Я строю 4 участка в одном ряду с общей осью Y. Однако по какой-то причине последний подплот не выровнен. Вот картинка:

enter image description here

Кажется, не проблема с кодом:

import numpy as np
import matplotlib.pyplot as plt
from functools import partial

t = np.linspace(-10, 10, 10000)

u = lambda x: np.heaviside(x, 0.5)
r = lambda x: np.piecewise(x, [x < 0, x >= 0], [0, lambda z: z])

########################################################################################################################

y = [2*u(t) - 2*u(t-1),
     u(t) - u(t-1),
     2*r(t)*(u(t+10) - u(t-1)),
     2*r(t+1)*(u(t+10) - u(t))]

legend = [r'$f_1(t)$',
          r'$f_2(t)$',
          r'$f_3(t)$',
          r'$f_4(t)$']

fig, ax = plt.subplots(nrows=1, ncols=4, sharey='all',
                       subplot_kw={'xlim': (-1.5, 2.5),
                                   'ylim': (-0.5, 2.5),
                                   'xticks': np.arange(-1, 3),
                                   'yticks': np.arange(-1, 3),
                                   'xlabel': r'$t$'})


for axi, yi, legendi in zip(ax, y, legend):
    axi.plot(t, yi, label=legendi)
    axi.legend()
    axi.grid(True)

Любые идеи по как решить это?

1 Ответ

2 голосов
/ 07 января 2020

Проблема исходит от параметров yticks; диапазон, который вы проходите, больше, чем диапазон ylim. Если вы измените аргументы ключевых слов подзаговора на:

fig, ax = plt.subplots(nrows=1, ncols=4, sharey=True,
                       subplot_kw={'xlim': (-1.5, 2.5),
                                   'ylim': (-0.5, 2.5),
                                   'xticks': np.arange(-1, 3),
                                   'yticks': np.arange(0, 3),
                                   'xlabel': r'$t$'})

Вы получите следующий график: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...