试图用下面的数据帧使用Pandas绘制一个图。
data = {
'date': ['2022-07-21 03:28:59.126007', '2022-07-21 03:29:01.127014', '2022-07-21 03:29:02.137008',
'2022-07-21 03:29:05.136001', '2022-07-21 03:29:06.139007', '2022-07-21 03:53:30.094009',
'2022-07-21 03:53:31.097000', '2022-07-21 03:53:40.096008', '2022-07-21 03:53:41.094009',
'2022-07-21 03:53:42.094009', '2022-07-21 04:26:25.108001', '2022-07-21 04:26:26.107009',
'2022-07-21 04:26:28.109008', '2022-07-21 04:26:29.114013', '2022-07-21 04:26:30.117004'],
'RFID_NO': ['RFID 003', 'RFID 003', 'RFID 003', 'RFID 003',
'RFID 003', 'RFID 002', 'RFID 002', 'RFID 002',
'RFID 002', 'RFID 002', 'RFID 014', 'RFID 014',
'RFID 014', 'RFID 014', 'RFID 014'],
'RFID Location': [51, 50, 51, 50, 51, 73, 72, 73, 74, 73, 1, 2, 3, 4, 12],
'Sh Location': [131, 132, 132, 132, 132, 124, 124, 124, 124, 124, 6, 6, 6, 6, 6]}
df = pd.DataFrame(
data, columns=[
'date', 'RFID_NO', 'RFID Location', 'Sh Location'])
date RFID_NO RFID Location Sh Location
0 2022-07-21 03:28:59.126007 RFID 003 51 131
1 2022-07-21 03:29:01.127014 RFID 003 50 132
2 2022-07-21 03:29:02.137008 RFID 003 51 132
3 2022-07-21 03:29:05.136001 RFID 003 50 132
4 2022-07-21 03:29:06.139007 RFID 003 51 132
5 2022-07-21 03:53:30.094009 RFID 002 73 124
6 2022-07-21 03:53:31.097000 RFID 002 72 124
7 2022-07-21 03:53:40.096008 RFID 002 73 124
8 2022-07-21 03:53:41.094009 RFID 002 74 124
9 2022-07-21 03:53:42.094009 RFID 002 73 124
10 2022-07-21 04:26:25.108001 RFID 014 1 6
11 2022-07-21 04:26:26.107009 RFID 014 2 6
12 2022-07-21 04:26:28.109008 RFID 014 3 6
13 2022-07-21 04:26:29.114013 RFID 014 4 6
14 2022-07-21 04:26:30.117004 RFID 014 12 6
def plot_values(df_plot):
df_plot["date"] = df_plot["date"].astype("datetime64")
v_RFID = df_plot['RFID Location']
v_SLC = df_plot['Sh Location']
df_plot = pd.DataFrame(list(zip(v_RFID, v_SLC)),
index=df_plot["date"],
columns=['RFID_no', 'Sh Location'])
df_plot.plot()
plt.show()
plot_values(df)

从帧中可以看到,有3个RFID的,(003,002,014)。我如何绘制每个RFID号码,其位置v时间,并显示在一个图例?RFID定位(蓝色)有三个组合。我是否需要将RFID_no列拆分成单独的列和相关的值?
Tks
发布于 2022-07-21 01:47:37
您使用日期作为x坐标,但是在RFID_NO区分之后,它们没有统一的日期值,因此显然不能将它们放在一个图中,您可以尝试使用子图来实现这一点。
如果您需要添加其他属性,可以自己更改它们。
df = pd.DataFrame(data, columns=['date', 'RFID_NO', 'RFID Location', 'Sh Location'])
for i, (RFID, item) in enumerate(df.groupby("RFID_NO")):
plt.subplot(3, 1, i+1)
item["date"] = pd.to_datetime(item["date"])
plt.plot(item["date"], item["Sh Location"], label=RFID)
plt.legend()
plt.show()发布于 2022-07-21 02:16:08
这里有一种方法。
# Prepare "date" column as index
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")
fig, axes = plt.subplots(3, 1)
for ax, (name, data) in zip(axes, df.groupby("RFID_NO")):
data.plot(ax=ax)
ax.set_title(name)
plt.tight_layout()
plt.show()

https://stackoverflow.com/questions/73059624
复制相似问题