从具有两列索引的数据框创建线图

Create line plot from dataframe with two columns index

我有以下数据框:

>>>                          mean_traf_tie
    a      d        c
    0.22  0.99      0.11      22
                    0.23      21
                    0.34      34
                    0.46      45
    0.44  0.99      0.11      45
                    0.23      65
                    0.34      66
                    0.46      68
    0.50  0.50      0.11      22
                    0.23      12
                    0.34      34
                    0.46      37
...

我想从这个数据框中创建绘图,c 将是 X 轴,y 将是平均速度,线将根据 a 和 d 列,例如,一条线将对于 a=0.22 和 d=0.99,x 将为 c,y 将为平均速度,然后第二行将为 a=0.44 和 d=0.99 等。

我试过这样做:

df.plot()

(原始数据框中的值不同)。

如您所见,出于某种原因,它在 x 轴上绘制了 a、d 并且只创建了一条线。

我试过这样修复它:

df.unstack(level=0).plot(figsize=(10,6))

但后来我得到了非常奇怪的图表,a 和 d 的线是正确的,但 x 轴是错误的:

如您所见,它以某种方式绘制了 a、d 值,但这不是我想要的 - 我希望它是 c 列,然后根据 a、d 列创建线,假设创建连续线。 我也试过了:

df[('mean_traf_tie')].unstack(level=0).plot(figsize=(10,6))
plt.xlabel('C')
plt.ylabel('mean_traf_tie')

但又得到了:

所需的输出将 c 列作为 x 轴,mean_traf_tie 作为 y 轴,并且将在 a 和 d 列上生成 bseed 行(0.22 和 0.99 的行,0.44 和 0.99 的行等)。

更新: 在像这样绘制之前,我已经设法通过将两个索引列合并为一个来完成它:

df['a,d'] = list(zip(df.a, df.d))

df=df.groupby(['a,d','C']).mean()

df.unstack(level=0).plot(figsize=(10,6))

图例仍然不理想化,但我得到了我想要的线和轴。

如果有人对如何使用原始专栏有更好的想法,我仍然愿意学习。