我编写了一个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绘制直方图来表示这些数据,但我对应该如何处理垃圾箱以及我应该如何表示列表(目前是对象列表)感到困惑。
有人可以就此提出建议吗?
非常感谢提前。
答案 0 :(得分: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的邻居数量随时间的变化。底行显示了时间上邻居数量的分布。
您可能想要使用sharing axes提供的axes labelling,all the other fun things和matplotlib
。