0

我编写了一个 python 脚本,它解析跟踪文件并检索对象列表(车辆对象),其中包含车辆 ID、时间步长以及该时间步长特定车辆无线电范围内的其他车辆数量:

for d_obj in global_list_of_nbrs:
    print "\t", d_obj.id, "\t", d_obj.time, "\t", d_obj.num_nbrs

我正在使用的测试文件的示例输出是:

0   0   1
0   1   2
0   2   0
1   0   1
1   1   2
2   0   0
2   1   2

这可以解释为在时间步长 0 具有 id 0 的车辆有 1 个相邻车辆,在时间步长 1 具有 id 0 的车辆有 2 个相邻车辆(即在无线电范围内)等。

我想使用 matplotlib 绘制直方图来表示这些数据,但我很困惑我应该如何处理 bin 等以及我应该如何表示列表(当前是对象列表)。

有人可以就此提出建议吗?

提前谢谢了。

4

1 回答 1

3

这是您可以使用此数据集执行的操作的示例:

注意:您需要安装pandas此示例才能为您工作。

n = 10000
id_col = randint(3, size=n)
lam = 10
num_nbrs = poisson(lam, size=n)

d = DataFrame({'id': id_col, 'num_nbrs': num_nbrs})

fig, axs = subplots(2, 3, figsize=(12, 4))

def plotter(ax, grp, grp_name, method, **kwargs):
    getattr(ax, method)(grp.num_nbrs.values, **kwargs)
    ax.set_title('ID: %i' % grp_name)

gb = d.groupby('id')

for row, method in zip((0, 1), ('plot', 'hist')):
    for ax, (grp_name, grp) in zip(axs[row].flat, gb):
        plotter(ax, grp, grp_name, method)

在此处输入图像描述

我所做的是为 3 个 ID 中的每一个创建 2 个图。顶行显示了每个 ID 的邻居数量随时间的变化。底行显示了邻居数量在时间上的分布。

你可能想玩一下共享轴轴标签所有其他有趣的东西matplotlib

于 2013-08-18T01:57:21.550 回答