mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-09-11 02:40:18 +08:00
56 lines
1.6 KiB
Python
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()
|