首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用数据绘制时间序列

用数据绘制时间序列
EN

Stack Overflow用户
提问于 2022-07-21 01:08:37
回答 2查看 56关注 0票数 0

试图用下面的数据帧使用Pandas绘制一个图。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2022-07-21 01:47:37

您使用日期作为x坐标,但是在RFID_NO区分之后,它们没有统一的日期值,因此显然不能将它们放在一个图中,您可以尝试使用子图来实现这一点。

如果您需要添加其他属性,可以自己更改它们。

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2022-07-21 02:16:08

这里有一种方法。

代码语言:javascript
复制
# 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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73059624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档