用不同的颜色为 1000 行绘制两列
Plot two columns for 1000 rows with different color
我有两个特征 datetime
和 volt
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 伏特和 dt_truncated。如果label_e是1,那么我们考虑plot。但是有 1000 个机器 ID,因此在绘图上有 6-7 条不同的线。
根据任务的回答,我得到了这个情节
您可以按照以下方式进行操作:
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()
这是输出:
在绘图之前旋转你的数据框:
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()
我有两个特征 datetime
和 volt
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 伏特和 dt_truncated。如果label_e是1,那么我们考虑plot。但是有 1000 个机器 ID,因此在绘图上有 6-7 条不同的线。
根据任务的回答,我得到了这个情节
您可以按照以下方式进行操作:
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()
这是输出:
在绘图之前旋转你的数据框:
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()