我有两个特性:datetime和volt for 1000 machineIDs。我正在使用matplotlib打印日期、时间和电压。现在,一些machineIDs具有独特的值,比如有6-7条唯一的行,因此图上有多条线。像这样,

对于不同的machineIDs,我想用不同的颜色分隔这些线条。问题是,我只为datetime和volt绘图。那我该怎么做?
这是一个样本数据
machineID dt_truncated volt_rollingmean_12 label_e
964 2015-01-27 12:00:00 194.788225 1这里我是基于label_e的值来绘制b/w伏特和label_e,如果label_e is1,那么我们就认为它是绘图。但是有1000个机器ID,因此有6-7行不同的代码。
根据任务的答案,我得到了这个情节

发布于 2021-12-22 09:27:46
下面是你可以这样做的方法:
fig, ax = plt.subplots()
groups = df.groupby('machineID')
for name, group in groups:
group = group.sort_values("dt_truncated")
ax.plot(group.dt_truncated, group.volt_rollingmean_12, marker='o', ms=12, label=group.machineID.unique()[0])
ax.legend()这是输出:

发布于 2021-12-22 09:33:18
在情节发生之前,将你的数据转换成一个支点:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dti = pd.date_range('2021-12-20', '2021-12-26')
df = pd.DataFrame({'machineID': np.repeat(range(1, 6), len(dti)),
'dt_truncated': dti.tolist()*5,
'volt_rollingmean_12': np.random.randint(160, 380, 5*len(dti))})
df.pivot('dt_truncated', 'machineID', 'volt_rollingmean_12').plot()
plt.show()

在label_e上进行过滤
df[df['label_e'] == 1].pivot(...).plot()https://stackoverflow.com/questions/70446554
复制相似问题