从具有两列索引的数据框创建线图
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))
图例仍然不理想化,但我得到了我想要的线和轴。
如果有人对如何使用原始专栏有更好的想法,我仍然愿意学习。
我有以下数据框:
>>> 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))
图例仍然不理想化,但我得到了我想要的线和轴。
如果有人对如何使用原始专栏有更好的想法,我仍然愿意学习。