Files
OrbbecSDK_ROS2/orbbec_camera/scripts/plot_stat.py
T
2024-08-14 13:56:58 +08:00

56 lines
1.6 KiB
Python

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
def process_data(data):
# 处理数据,将含有 "ms" 的数据转换为浮点数
for col in ['min', 'avg', 'max']:
data[col] = data[col].str.replace(' ms', '').astype(float)
return data
def split_data(data):
# 分别筛选出age和period的数据
age_data = data[data['message_type'] == 'age']
period_data = data[data['message_type'] == 'period']
return age_data, period_data
def plot_data(data, title, y_ticks):
plt.figure(figsize=(12, 6))
for col, color in zip(['min', 'avg', 'max'], ['green', 'yellow', 'cyan']):
# Convert datetime to numpy array
x = data['_time'].to_numpy()
y = data[col].to_numpy()
plt.plot(x, y, label=col, color=color, marker='o', linestyle='-')
plt.ylabel('Milliseconds')
plt.title(title)
plt.gca().xaxis.set_major_locator(mdates.MinuteLocator(interval=10))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
plt.legend()
plt.grid(True, which='both')
plt.xticks(rotation=45)
plt.yticks(range(0, y_ticks[1], y_ticks[0]))
plt.tight_layout()
plt.show()
def main():
plt.style.use('dark_background')
data = pd.read_csv('statistics.csv')
data['_time'] = pd.to_datetime(data['_time'])
data = process_data(data)
age_data, period_data = split_data(data)
plot_data(age_data, 'Message Age', (100, 501))
plot_data(period_data, 'Message Period', (20, 101))
if __name__ == "__main__":
main()