写python代码,画出直方图,从包含多个txt文件的label_3d文件夹中提取高度信息,每个txt文件包含多条高度信息,每行信息的格式为:Car 0.00 0 -1.76 -1 -1 -1 -1 2.42 2.83 5.58 3.84 2.30 19.48 -1.56,其中2.42表示高度信息,单位为米。直方图的横坐标为高度,每隔0.1米统计一次,纵坐标代表数量。
时间: 2024-01-22 17:21:24 浏览: 90
以下是代码实现:
```python
import os
import numpy as np
import matplotlib.pyplot as plt
# 定义高度统计函数
def height_statistics(file_path):
heights = []
with open(file_path, 'r') as f:
lines = f.readlines()
for line in lines:
if line.startswith('Car'):
height = float(line.split()[8])
heights.append(height)
return heights
# 遍历文件夹,提取高度信息
heights = []
folder_path = 'label_3d'
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
heights += height_statistics(file_path)
# 统计高度分布
bins = np.arange(0, 5, 0.1) # 设置直方图的横坐标范围和间隔
plt.hist(heights, bins=bins)
plt.xlabel('Height (m)')
plt.ylabel('Count')
plt.title('Height Distribution')
plt.show()
```
这段代码首先定义了一个 `height_statistics` 函数,用于从单个 txt 文件中提取高度信息,并返回一个列表。然后,通过遍历包含多个 txt 文件的 `label_3d` 文件夹,将所有的高度信息提取出来并保存在一个列表 `heights` 中。最后,使用 `matplotlib` 库的 `hist` 函数绘制直方图,横坐标为高度,纵坐标为数量。
阅读全文