Я пытаюсь создать сетку подзаголовков на основе объекта Pandas groupby. Я хотел бы, чтобы каждый график был основан на двух столбцах данных для одной группы объекта groupby. Набор поддельных данных:
C1,C2,C3,C4
1,12,125,25
2,13,25,25
3,15,98,25
4,12,77,25
5,15,889,25
6,13,56,25
7,12,256,25
8,12,158,25
9,13,158,25
10,15,1366,25
Я пробовал следующий код:
import pandas as pd
import csv
import matplotlib as mpl
import matplotlib.pyplot as plt
import math
#Path to CSV File
path = "..\\fake_data.csv"
#Read CSV into pandas DataFrame
df = pd.read_csv(path)
#GroupBy C2
grouped = df.groupby('C2')
#Figure out number of rows needed for 2 column grid plot
#Also accounts for odd number of plots
nrows = int(math.ceil(len(grouped)/2.))
#Setup Subplots
fig, axs = plt.subplots(nrows,2)
for ax in axs.flatten():
for i,j in grouped:
j.plot(x='C1',y='C3', ax=ax)
plt.savefig("plot.png")
Но он генерирует 4 идентичных подзаголовка со всеми данными, нанесенными на каждый (см. Пример вывода ниже):
Чтобы исправить это, я хотел бы сделать что-то вроде следующего:
for i,j in grouped:
j.plot(x='C1',y='C3',ax=axs)
next(axs)
но я получаю эту ошибку
AttributeError: объект 'numpy.ndarray' не имеет атрибута 'get_figure'
У меня будет динамическое количество групп в объекте groupby, который я хочу построить, и намного больше элементов, чем предоставленные мною фальшивые данные. Вот почему мне нужно элегантное, динамическое решение, и каждый набор данных группы отображается на отдельном подзаголовке.