Как добавить подзаговор в группу участков - PullRequest
0 голосов
/ 06 июля 2018

У меня есть группа plots, которую я хочу отобразить как subplots. Я могу добавить большинство из них, но я изо всех сил пытаюсь добавить определенный. Для приведенного ниже кода я могу добавить subplot для Plot One и Plot Three, но не могу добавить субплот к Plot Two. Там нет ошибки, но он создается как отдельный figure.

import pandas as pd
import matplotlib.pyplot as plt

d = ({
    'A' : ['1','1','1','2','2','2','3','3','3','3'],     
    'B' : ['A','B','C','A','B','C','D','A','B','C'],
    'C' : ['John','Carl','Carl','John','Lily','John','Lily','John','Carl','Carl'],  
    'D' : [1,2,3,4,5,6,7,8,9,10], 
    'E' : [0,2,4,6,5,6,7,8,9,10],          
})

fig = plt.figure(figsize = (9,4))

df = pd.DataFrame(data=d)

def Plot_One(ax,pid, fontsize=12):
    ax.set_title('Plot One', fontsize=10)
    ax.scatter(df['E'],df['D'])

def Plot_Two(ax,pid):
    df.assign(A=df.A.astype(int)).pivot_table(index="C", columns="B", values="A",aggfunc='count').rename_axis(None).rename_axis(None,1).plot(kind='bar')
    ax.set_title('Plot Two', fontsize=10)

def Plot_Three(ax,pid, fontsize=12):
    ax.set_title('Plot Three', fontsize=10)
    ax.plot(df['E'],df['D'])

ax1 = plt.subplot2grid((3,3), (0, 0), colspan = 3)
ax2 = plt.subplot2grid((3,3), (1, 0), colspan = 2)
ax3 = plt.subplot2grid((3,3), (2, 0), colspan = 1)

Plot_One(ax1,1)
Plot_Two(ax2,1) 
Plot_Three(ax3,1)

fig.tight_layout()

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

enter image description here Если я пытаюсь присвоить столбчатую диаграмму ax2, я получаю ошибку: SyntaxError: can't assign to function call

df.assign(A=df.A.astype(int)).pivot_table(index="C", columns="B", values="A",aggfunc='count').rename_axis(None).rename_axis(None,1).plot(kind='bar'), ax = ax2

1 Ответ

0 голосов
/ 06 июля 2018

Вы почти у цели. Просто скобка последней части вашего кода неуместна.

Попытка:

df.assign(A=df.A.astype(int)).pivot_table(index="C", columns="B", values="A",aggfunc='count').rename_axis(None).rename_axis(None,1).plot(kind='bar', ax=ax2)
...