如何从具有 CAN 通信数据的 .csv 文件中绘制数据(它以 4 个数据点的 4 个数据包接收数据)
How to plot data from .csv file which has the data from CAN communication(its receives data in 4 packets of 4 data points)
.csv 文件的格式如下所示,因为它在数据包中获取数据,所以中间有间隙。我想在 python 中使用 matplotlib 在 x 轴上绘制带有时间戳的数据,在 y 轴上绘制带有 sensor1 的数据,所以有可能吗?
这是 CSV 文件中的数据,因此您可以看到 4 个数据点收到了 4 次,这是在不同的时间戳读取的。我试着接近正常的方式,但它显示了一个空白图。
这是 CSV 文件的 link。
https://docs.google.com/spreadsheets/d/17SIabIYYmSogOdeYTzpEwy9s2pZuVO3ghoChSSgGwAg/edit?usp=sharing
提前致谢。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("cantype.csv")
X = data.time_stamp
Y = data.sensor1
# plt.plot(data.time_stamp,data.BMS_01_CellVolt01)
plt.plot(X,Y)
plt.show()
数据
time_stamp,sensor1,sensor2,sensor3,sensor4,sensor5,sensor6,sensor7,sensor8,sensor9,sensor10,sensor11,sensor12,sensor13,sensor14,sensor15,sensor16
1.37E+12,1.50465,1.50405,1.50435,1.5042,,,,,,,,,,,,
1.37E+12,,,,,1.47105,1.5042,1.5045,1.50435,,,,,,,,
1.37E+12,,,,,,,,,1.49115,1.49205,1.4961,1.49865,,,,
1.37E+12,,,,,,,,,,,,,1.50405,1.5042,1.50405,1.50435
1.37E+12,1.50465,1.50405,1.50435,1.5042,,,,,,,,,,,,
1.37E+12,,,,,1.47105,1.5042,1.5045,1.50435,,,,,,,,
1.37E+12,,,,,,,,,1.49115,1.49205,1.4961,1.49865,,,,
1.37E+12,,,,,,,,,,,,,1.50405,1.5042,1.50405,1.50435
加载 csv pandas:
import pandas as pd
df = pd.read_csv('cantype.csv')
然后要么使用pandas绘图:
df.plot(x='time_stamp', y='sensor1', marker='.')
或者纯matplotlib:
import matplotlib.pyplot as plt
plt.plot(df.time_stamp, df.sensor1, marker='.')
根据您的示例数据,该图看起来不像是有意义的时间序列,因为只有两个 (timestamp
, sensor1
) 点,并且都位于 (1.37E+12, 1.50465):
.csv 文件的格式如下所示,因为它在数据包中获取数据,所以中间有间隙。我想在 python 中使用 matplotlib 在 x 轴上绘制带有时间戳的数据,在 y 轴上绘制带有 sensor1 的数据,所以有可能吗?
这是 CSV 文件中的数据,因此您可以看到 4 个数据点收到了 4 次,这是在不同的时间戳读取的。我试着接近正常的方式,但它显示了一个空白图。
这是 CSV 文件的 link。 https://docs.google.com/spreadsheets/d/17SIabIYYmSogOdeYTzpEwy9s2pZuVO3ghoChSSgGwAg/edit?usp=sharing
提前致谢。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("cantype.csv")
X = data.time_stamp
Y = data.sensor1
# plt.plot(data.time_stamp,data.BMS_01_CellVolt01)
plt.plot(X,Y)
plt.show()
数据
time_stamp,sensor1,sensor2,sensor3,sensor4,sensor5,sensor6,sensor7,sensor8,sensor9,sensor10,sensor11,sensor12,sensor13,sensor14,sensor15,sensor16
1.37E+12,1.50465,1.50405,1.50435,1.5042,,,,,,,,,,,,
1.37E+12,,,,,1.47105,1.5042,1.5045,1.50435,,,,,,,,
1.37E+12,,,,,,,,,1.49115,1.49205,1.4961,1.49865,,,,
1.37E+12,,,,,,,,,,,,,1.50405,1.5042,1.50405,1.50435
1.37E+12,1.50465,1.50405,1.50435,1.5042,,,,,,,,,,,,
1.37E+12,,,,,1.47105,1.5042,1.5045,1.50435,,,,,,,,
1.37E+12,,,,,,,,,1.49115,1.49205,1.4961,1.49865,,,,
1.37E+12,,,,,,,,,,,,,1.50405,1.5042,1.50405,1.50435
加载 csv pandas:
import pandas as pd
df = pd.read_csv('cantype.csv')
然后要么使用pandas绘图:
df.plot(x='time_stamp', y='sensor1', marker='.')
或者纯matplotlib:
import matplotlib.pyplot as plt
plt.plot(df.time_stamp, df.sensor1, marker='.')
根据您的示例数据,该图看起来不像是有意义的时间序列,因为只有两个 (timestamp
, sensor1
) 点,并且都位于 (1.37E+12, 1.50465):