Сюжеты Pyplot не удается с Seaborn - PullRequest
0 голосов
/ 26 февраля 2020

При попытке построить две гистограммы с рядом морских линий я получаю следующую ошибку:

Мой код:

fig, axs = plt.subplots(1, 2)
sns.distplot(MAPE_per_stock , ax = axs[0,0])
sns.distplot(MAPE_per_stock[start_test:], ax = axs[0, 1])

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-212-9c4fad36d97d> in <module>
      1 fig, axs = plt.subplots(1, 2)
----> 2 sns.distplot(MAPE_per_stock , ax = axs[0,0])
      3 sns.distplot(MAPE_per_stock[start_test:], ax = axs[0, 1])

IndexError: too many indices for array

Что спровоцировало исключение и как я должен исправить код

1 Ответ

0 голосов
/ 26 февраля 2020
import matplotlib.pyplot as plt

fig, axs = plt.subplots(1, 2)

Глядя на axs, который вы создаете

axs.shape

out: (2,)

Итак, массив с двумя элементами вдоль одной оси. Доступ к отдельным элементам можно получить с помощью axs[0], axs[1]:

axs[0]
<matplotlib.axes._subplots.AxesSubplot at 0x1965b6bc5f8>

, поскольку данные упорядочены только в одном направлении, указание двух позиций приводит к получаемой ошибке:

axs[0,1]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-3-aaadfc217757> in <module>
----> 1 axs[0,1]

IndexError: too many indices for array

Обратите внимание, что если вы создаете сетку 2 на 2:

fig, axs = plt.subplots(2, 2)

, вы фактически создаете массив 2 на 2, который можно проиндексировать с помощью схемы в вашем вопросе.

axs.shape
out: (2,2)

axs[1,1]
out: <matplotlib.axes._subplots.AxesSubplot at 0x1965bcd1860>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...