python - 循环遍历数据框中的数组并按组绘制
问题描述
我有一个包含 X 和 Y 位置数据的数据框,并且有 3 个分组变量:
- obsScenario(0、1 或 2)
- startPos (1 或 2)
- 目标位置(1、2 或 3)。
因此,这些分组变量有 18 种组合:3 x 2 x 3
每个参与者的 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)
解决方案
这就是我想要的:
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)
推荐阅读
- python - 无法理解错误消息(Python 中的回归)
- android-studio - Android Studio 腐败怪异:打开完全错误的文件
- python - 隐藏从自定义 CLI 应用程序生成的 json 文件格式数据?
- javascript - 如何增加动物区的价值?使用 javascript 和服务器端函数
- javascript - 将数据追加到一个数组中,而不是使用多嵌套数组
- npm - 如何在不依赖 bower 的情况下运行 web-component-tester 来测试 vanilla web-component
- excel - 如何修复此代码中的“Error438:对象不支持此属性或方法”?
- xcode - Xcode 默认 gcc (mis) 配置为为 iOS 而不是 macOS 编译
- swift - 在 ARKit 中转换 SIMD2 位置和标记
- laravel-5.4 - 如何解决 Laravel 5.4 中的“BadMethodCallException Method Illuminate\Routing\Route::getParameter 不存在”异常?