У меня есть несколько Pandas DataFrames с одинаковой шкалой значений, но с разными столбцами и индексами. При вызове df.plot()
получаю отдельные сюжетные изображения. на самом деле я хочу, чтобы все они находились в одном сюжете с подсюжетами, но, к сожалению, я не могу придумать решение, как это сделать, и был бы очень признателен за некоторую помощь.
python
matplotlib
pandas
Джимми С
источник
источник
.subplots()
возвращает разные системы координат в зависимости от размеров массива создаваемых вами подзаголовков. Итак, если вы вернете подзаголовки, где, скажем,nrows=2, ncols=1
вам нужно будет проиндексировать оси какaxes[0]
иaxes[1]
. См stackoverflow.com/a/21967899/1569221IndexError: too many indices for array
.subplot()
. Установитеsqueeze=False
принудительно,.subplot()
чтобы всегда возвращатьndarray
в любом случае строк и столбцов.Вы можете увидеть напр. в документации, демонстрирующей ответ Джориса. Также из документации вы также можете установить
subplots=True
иlayout=(,)
вplot
функции pandas :Вы также можете использовать
fig.add_subplot()
which принимает параметры сетки подзаголовка, такие как 221, 222, 223, 224 и т. Д., Как описано в сообщении здесь . Хорошие примеры графика на фрейме данных pandas, включая подзаголовки, можно увидеть в этом блокноте ipython .источник
subplots
иlayout
kwargs будут генерировать несколько графиков ТОЛЬКО для одного фрейма данных. Это связано, но не является решением вопроса OP о построении нескольких фреймов данных на одном графике.layout=(df.shape[1], 1)
, например).Вы можете использовать знакомый стиль Matplotlib, вызывая
figure
иsubplot
, но вам просто нужно указать текущую ось, используяplt.gca()
. Пример:и т.д...
источник
Вы можете построить несколько подзаголовков из нескольких фреймов данных pandas, используя matplotlib с простым трюком, состоящим в создании списка всех фреймов данных. Затем используйте цикл for для построения подзаголовков.
Рабочий код:
Используя этот код, вы можете построить подзаголовки в любой конфигурации. Вам нужно просто определить количество строк
nrow
и количество столбцовncol
. Также вам необходимо составить список фреймов данных,df_list
которые вы хотите построить.источник
count =+1
ноcount +=1
Вы можете использовать это:
источник
Возможно, вам вообще не нужно использовать Pandas. Вот график matplotlib частот кошек:
источник
Основываясь на ответе @joris выше, если вы уже установили ссылку на подзаговор, вы также можете использовать ссылку. Например,
источник
Как создать несколько графиков из словаря фреймов данных с длинными (аккуратными) данными
Предположения
cat
,, могут перекрываться, но все фреймы данных могут не содержать все значенияcat
hue='cat'
Поскольку кадры данных проходят итерацию, нет гарантии, что цвета будут отображаться одинаково для каждого графика.
'cat'
значений для всех фреймов данных.Импорт и синтетические данные
Создавайте сопоставления цветов и график
источник