gpt4 book ai didi

python - 如何正确绘制情节?

转载 作者:太空宇宙 更新时间:2023-11-03 20:15:06 25 4
gpt4 key购买 nike

我有一个具有以下结构的数据框:

Obj | Err   | Start    | End      | Dur   |   
obj1| ac |{datetime}|{datetime}| 1.0 |
obj1| dc |{datetime}|{datetime}| 3.0 |
obj1| loc |{datetime}|{datetime}| 4.0 |
obj2| ac |{datetime}|{datetime}| 1.0 |
obj2| loc |{datetime}|{datetime}| 1.0 |

我正在尝试构建一个散点图,其中 x 轴是 AC 错误的开始时间,y 轴 = AC 开始时间与另一个错误的开始时间之间的差。

我尝试了什么。
我制作了一个计算时间差的数据框,如下所示:

Obj | Err   | Start    | End      | Dur   | Err_y | Start_y  | End_y    | Dur_y | Time diff  
obj1| ac |{datetime}|{datetime}| 1.0 | dc |{datetime}|{datetime}| 3.0 | 2.0
obj1| ac |{datetime}|{datetime}| 3.0 | cell |{datetime}|{datetime}| 1.0 | 0.0
obj1| ac |{datetime}|{datetime}| 4.0 | loc |{datetime}|{datetime}| 1.0 | 3.0
obj2| ac |{datetime}|{datetime}| 1.0 | loc |{datetime}|{datetime}| 3.0 | 2.0

但是当我尝试绘制它时,我收到一个错误,即 x 轴和 y 轴必须具有相同的长度。这是我的绘图代码:

for obj in data['Obj'].unique():
AC = data[data['Obj']==obj].reset_index(drop=True)
plt.figure(figsize=(10,5))
plt.scatter(AC[AC['Err_x']=='ac']['Start_x'].tolist(),AC[AC['Alarm_y']=='dc']['Time diff'],c='b', label = 'Battery')
plt.scatter(AC[AC['Err_x']=='ac']['Start_x'].tolist(),AC[AC['Alarm_y']=='loc']['Time diff'],c='b', label = 'Loc')
plt.scatter(AC[AC['Err_x']=='ac']['Start_x'].tolist(),AC[AC['Alarm_y']=='cell']['Time diff'],c='b', label = 'Cell')
plt.ylim(0,200)
plt.title(obj)
plt.legend()

也许有一种方法可以在不制作额外数据框的情况下构建这样的图?

最佳答案

通过不优雅的方式解决了这个问题,因此仍然感谢任何帮助。

for obj in data['Obj'].unique():    #used the initial dataframe
DDT=data[data['Obj']=='obj].reset_index(drop=True)
DDT['key'] = ((DDT.Obj != DDT.Obj.shift())|(DDT.Err == 'ac')).cumsum()
DDDD = pd.merge(DDT.loc[DDT['Err']=='ac'], #
DDT.loc[DDT['err']=='dc'], #
on=['Obj', 'key'], #
how='left') # the problem is that this
DDDD['time_diff'] = (DDDD['Start_y'] - # part of code needed
DDDD['Start_x']).dt.total_seconds()//60 # to be duplicated for
DDDD.dropna(inplace=True) # every err that is
DDDD=DDDD[DDDD['time_diff'] > 0] # compared with ac
DDDD=DDDD[DDDD['Dur_x'] >= DDDD['time_diff']] #
plt.figure(figsize=(15,7))
plt.scatter(DDT[DDT['Err']=='ac']['Start'].tolist(),
DDT[DDT['Err']=='ac']['Dur'], c='b', label='AC', s=10)
plt.scatter(DDDD['Start_x'].tolist(), DDDD['time_diff'], c='g', label = 'DC')
plt.legend()

关于python - 如何正确绘制情节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com