基于多索引级别为绘图的不同部分着色

时间:2019-05-02 21:26:35

标签: python-3.x dataframe matplotlib plot multi-index

我需要使用pyplot创建一个绘图,在该绘图中我可以根据DataFrame(df)中的第一个索引级别为标记着色。 示例:以下所有值:A-红色,B-绿色,C-蓝色 我正在针对cat2值绘制a1,a2,a3,a4,a5。每个值都应在同一图上。

我可以使用横截面通过子图来完成它:

f, a = plt.subplots(3,1)
df.xs('A').plot(ax=a[0])
df.xs('B').plot(ax=a[1])
df.xs('C').plot(ax=a[2])

子图可以让我为不同的xs上色,但是我需要一种在同一图上进行着色的方法。 Link is an image of my dataframe in csv

1 个答案:

答案 0 :(得分:0)

我想类似的事情会起作用。

f, a = plt.subplots(1, 1)
# Only create one subplot as all the data is meant to go on one plot only
df.xs('A').plot(ax=a, marker='D', markersize=6, markerfacecolor='red',
                markeredgecolor='red')
df.xs('B').plot(ax=a, marker='D', markersize=6, markerfacecolor='green',
                markeredgecolor='green')
df.xs('C').plot(ax=a, marker='D', markersize=6, markerfacecolor='blue',
                markeredgecolor='blue')