首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为1000行不同颜色的行绘制两列

为1000行不同颜色的行绘制两列
EN

Stack Overflow用户
提问于 2021-12-22 09:04:45
回答 2查看 127关注 0票数 2

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

对于不同的machineIDs,我想用不同的颜色分隔这些线条。问题是,我只为datetimevolt绘图。那我该怎么做?

这是一个样本数据

代码语言:javascript
复制
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行不同的代码。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-22 09:27:46

下面是你可以这样做的方法:

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

这是输出:

票数 1
EN

Stack Overflow用户

发布于 2021-12-22 09:33:18

在情节发生之前,将你的数据转换成一个支点:

代码语言:javascript
复制
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上进行过滤

代码语言:javascript
复制
df[df['label_e'] == 1].pivot(...).plot()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70446554

复制
相关文章

相似问题

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