2016-12-24 3 views
2

Используя подзаголовки, существует ли пифонический способ построения нескольких строк на каждый подзаголовок? У меня есть фрейм данных pandas с двумя индексами строк, datestring и fruit, с хранилищем для столбцов и количеством для значений. Я хочу 5 подзаголовков, по одному для каждого магазина, с datestring как ось x и количество в качестве оси y, причем каждый плод является его собственной цветной линией.Matplotlib: Участок нескольких строк на временной шкале subplot

df.plot(subplots=True) 

Почти получает меня там, я думаю, с правильным количеством сюжетных, за исключением того, что агрегаты количества в целом, а не черчения фруктами.

enter image description here

ответ

3

установки
всегда предоставляют данные выборки, воспроизводящий вашу проблему.
я предоставил некоторые здесь

cols = pd.Index(['TJ', 'WH', 'SAFE', 'Walmart', 'Generic'], name='Store') 
dates = ['2015-10-23', '2015-10-24'] 
fruit = ['carrots', 'pears', 'mangos', 'banannas', 
     'melons', 'strawberries', 'blueberries', 'blackberries'] 
rows = pd.MultiIndex.from_product([dates, fruit], names=['datestring', 'fruit']) 
df = pd.DataFrame(np.random.randint(50, size=(16, 5)), rows, cols) 
df 

enter image description here

Во-первых, вы хотите, чтобы преобразовать этот первый уровень индекса строки с pd.to_datetime

df.index.set_levels(pd.to_datetime(df.index.levels[0]), 0, inplace=True) 

Теперь мы можем видеть, что мы можем построить интуитивно

# fill_value is unnecessary with the sample data, but should be there 
df.TJ.unstack(fill_value=0).plot() 

enter image description here

Мы можем построить все с

fig, axes = plt.subplots(5, 1, figsize=(12, 8)) 

for i, (j, col) in enumerate(df.iteritems()): 
    ax = axes[i] 
    col = col.rename_axis([None, None]) 
    col.unstack(fill_value=0).plot(ax=ax, title=j, legend=False) 

    if i == 0: 
     ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left', ncol=1) 

fig.tight_layout() 

enter image description here

+0

@piRSqaured Спасибо. Очень полезный ответ; Я лучше понимаю, как работает matplotlib. –

Смежные вопросы