循环数据帧中的数组并按组打印

2024-10-02 04:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含X&;Y位置数据,有3个分组变量:

  1. OBS场景(0、1或2)
  2. startPos(1或2)
  3. targetPos(1、2或3)

因此,这些分组变量有18种组合:3x2x3

每个参与者的X和Y数据长度约为300-500个数据点(各不相同)

数据帧如下所示:

              X         Y  participantNum  obsScenario  startPos  targetPos
0    -16.000000  5.000000         6432024            0         1          1
1    -16.000000  5.000000         6432024            0         1          1
2    -15.833450  5.000000         6432024            0         1          1
3    -15.667200  5.000000         6432024            0         1          1
4    -15.500100  5.000000         6432024            0         1          1
        ...       ...             ...          ...       ...        ...
2185  -1.572058 -3.982638         7830381            2         2          2
2186  -1.406996 -3.958967         7830381            2         2          2
2187  -1.242231 -3.935339         7830381            2         2          2
2188  -1.077516 -3.911718         7830381            2         2          2
2189  -0.912604 -3.888069         7830381            2         2          2

我需要分别绘制这18种组合的X,Y数据

我尝试使用类似的方法,但这只是在同一个图上绘制所有XY轨迹:

for aid, grp in df.groupby(['obsScenario', 'startPos', 'targetPos']):
    plt.plot(grp[0].values, grp[1].values) 
plt.show() 

使用这样的方法不会考虑分组变量的不同组合:

fig, axs = plt.subplots(nrows=3, ncols=6)

for ax in axs.flat:
    plotxy(ax,x,y)

Tags: 数据方法infor绘制pltaxamp
1条回答
网友
1楼 · 发布于 2024-10-02 04:31:15

这正是我想要的:

fig, axs = plt.subplots(6,3)
grp = df.groupby(['obsScenario', 'startPos', 'targetPos'])
for (name, df), ax in zip(grp, axs.flat):
    df.plot(x='X',y='Y', ax=ax)

相关问题 更多 >

    热门问题