【问题标题】:Plot two columns for 1000 rows with different color用不同颜色为 1000 行绘制两列
【发布时间】:2022-01-23 12:43:53
【问题描述】:

对于1000 machineIDs,我有两个功能datetimevolt。我正在使用 matplotlib 打印日期时间和电压。现在,一些machineIDs 具有唯一值,例如有 6-7 条唯一线,因此图表上有多条线。像这样,

我想为不同的machineIDs 分隔不同颜色的这些行。问题是我只为datetimevolt 绘图。那我该怎么做呢?

这是一个示例数据

machineID   dt_truncated    volt_rollingmean_12   label_e
964      2015-01-27 12:00:00    194.788225          1

在这里,我根据 label_e 的值绘制 b/w volt 和 dt_truncated。如果 label_e 为 1,那么我们考虑将其用于绘图。但是有 1000 个机器 ID,因此绘图上有 6-7 条不同的线。

根据任务的答案,我得到了这个情节

【问题讨论】:

  • 分享一小段样本数据会很有帮助。谢谢
  • @quest 添加了带有一些解释的 sinppet 数据
  • 图表上的每一行是否应该代表一个机器ID?
  • 不完全是.. 那里有 5-6 行代表机器 ID 的不同行,每行应该有不同的颜色
  • 那么一行上的每个点应该代表不同的machine_id?

标签: pandas matplotlib plot


【解决方案1】:

你可以这样做:

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()

这是输出:

【讨论】:

  • 我得到了一些不同的东西。我已将该有问题的情节添加为编辑。请检查。
  • 因为我们的数据不同,所以我的是随机的。
  • ms markersize的缩写
  • 更改图形大小fig.set_figheight(15); fig.set_figwidth(15)f, axs = plt.subplots(2,2,figsize=(15,15)) 也应该可以。
  • ax.legend() 将带出传奇。
【解决方案2】:

在绘图之前转动您的数据框:

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()

【讨论】:

  • @AmberBhanarkar。是你所期望的吗?
  • 是的,但是如果我想传递一个列而不是日期范围怎么办?您对日期范围进行了硬编码。
  • 唯一相关的部分是df[df['label_e'] == 1].pivot('dt_truncated', 'machineID', 'volt_rollingmean_12').plot()
  • 我创建了这个数据框是因为你没有提供任何数据(一行是不够的)检查MRE
猜你喜欢
  • 2017-05-23
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多