是否可以在matplotlib堆栈图中显式设置堆栈的顺序?

时间:2018-09-25 21:31:27

标签: python-3.x pandas matplotlib

我想在Matplotlib堆栈图中明确设置堆栈的顺序。这是一个示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

np.random.seed(1)
df = pd.DataFrame(np.random.randint(0,100,size=(100,4)),columns=list('ABCD'))

df.plot(kind='area',stacked=True,figsize=(20,10));

这将产生以下图像:

enter image description here

数据框的最后一行来自:

df.tail(1)

是:

    A   B   C   D
99  16  30  84  57

这是我要实现的目标:

我想对堆栈图进行重新排序,以使堆栈从下至上按A,B,D,C的顺序绘制,即列从下至上按其在最后一次递增值的顺序排列df的行。

到目前为止,我已经尝试在绘制之前明确地对df中的列进行重新排序:

df[['A','B','D','C']].plot(kind='area',stacked=True,figsize=(20,10))

但这会产生与上面完全相同的图表。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

图形不同。查看红色图下方的区域以获取粒子x。这些图形的形状在绿色和蓝色阴影区域不同。

enter image description here

现在,

df[['A','B','D','C']].plot(kind='area',stacked=True,figsize=(20,10))

enter image description here