【发布时间】:2018-06-27 20:10:06
【问题描述】:
我有一个数据框,df2,它有 6 行 1591 列
0.0.0 10.1.21 1.5.12 3.7.8 3.5.8 1.7.8 ...
June 1 1 4 0 0 4
July 0 0 0 0 0 0
August 54 0 9 0 5 0
September 22 0 6 0 0 1
October 0 9 5 1 4 0
我想将图中每个面板中的 3 列的倍数绘制为堆叠条。即 column: 0.0.0 到 1.5.12 将绘制在单独的面板中,而 column:3.7.8 到 1.7.8 将绘制在另一个面板中。代码如下:
df= df2
df['key1'] = 0
df.key1.loc[:, ['0.0.0', '10.1.21', '1.5.12']].values = 1
df.key1.loc[:,['3.7.8', '3.5.8', '1.7.8']].values = 2
df.key1.loc[:,['4.4.3', '2.2.0', '2.8.0']].values = 3
# Plot in Three Panels
distinct_keys = df['key1'].unique()
fig, axes = pyplot.subplots(len(distinct_keys), 1, sharex=True, figsize= (3,5))
#{df_subset groups the rows with the same key in other to plot them in the same panel}
for i, key in enumerate(distinct_keys):
df_subset =df[df['key1']==key]
# plot
axes[i] = df_subset.plot(kind='bar', stacked=True)
pyplot.legend(bbox_to_anchor=(1.04,1), loc="upper right")
pyplot.subplots_adjust(right=0.7)
pyplot.tight_layout(rect=[0,0,0.75,1])
pyplot.savefig("output.png", bbox_inches="tight")
但我得到 :IndexingError: Too many indexers
【问题讨论】:
标签: python pandas matplotlib plot group-by