我有一组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()
这是当前输出。如您所见,我要放置在图2中的条形图作为单独的图生成。
如果我尝试将条形图分配给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
答案 0 :(得分:0)
您快到了。只是将代码最后一部分的括号放错了位置。
尝试:
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)