Получение ошибки при построении фигуры с вложенными точками с использованием осей в matplotlib - PullRequest
0 голосов
/ 05 февраля 2019

Я попытался построить подзаговоры, используя приведенный ниже код. Но я получаю 'AttributeError: 'numpy.ndarray' object has no attribute 'boxplot'.

, но, изменяя plt.subplots(1,2), он строит диаграмму с индексом.

import matplotlib.pyplot as plt
import seaborn as sns

fig = plt.Figure(figsize=(10,5))

x = [i for i in range(100)]


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

for i in range(4):
    sns.boxplot(x, ax=axes[i])

plt.show();

Я ожидаю, что должны быть построены четыре участка, но AttributeError выбрасывает

1 Ответ

0 голосов
/ 05 февраля 2019

Пара вопросов на вашем сюжете:

  • Вы определяете фигуру дважды, которая не нужна.Я объединил их в один.
  • Вы зацикливались 4 раза, используя range(4) и используя axes[i] для доступа к подсюжетам.Это неверно по следующей причине: ваши оси двумерные, поэтому вам нужно 2 индекса для доступа к ним.Каждое измерение имеет длину 2, потому что у вас есть 2 строки и 2 столбца, поэтому вы можете использовать только индексы 0 и 1 вдоль каждой оси.Напримерaxes[0,1], axes[1,0] и т. Д.
  • Как указывал @DavidG, вам не нужно понимание списка.Вы можете напрямую использовать range(100)

Решение состоит в том, чтобы развернуть / сгладить объект 2d-оси, а затем выполнить итерацию по нему, что дает вам отдельный подзаговор, по одному за раз.Порядок подзаголовков будет разбит на строки.


Полный рабочий код

import matplotlib.pyplot as plt
import seaborn as sns

x = range(100)

fig , axes = plt.subplots(2,2, figsize=(10,5))

for ax_ in axes.flatten():
    sns.boxplot(x, ax=ax_)

plt.show()

enter image description here

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