import matplotlib.pyplot as plt
import seaborn as sns
sns.catplot(x = 'Event', y = 'Duration', hue = 'Machine', col = 'Outcome', data = df)
Попробуйте, два графика разброса.Ось X - это событие, ось Y - это Длительность, цвет точек основан на машине, и есть два графика, один для сбоя, а рядом - другой для прохода."df" - это ваш фрейм данных.Вы можете удалить col = 'Outcome'
, чтобы Fail и Pass были на одном графике.
EDIT:
fig, ax = plt.subplots(figsize = (10,10))
g = sns.scatterplot(x = 'Event', y = 'Duration', hue = 'Machine', data = df[df['Outcome'] == 'PASS'], ax = ax)
g = sns.scatterplot(x = 'Event', y = 'Duration', hue = 'Machine', data = df[df['Outcome'] == 'FAIL'], ax = ax,
style = 'Machine', markers = ['x', 'x', 'x'])
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, ['Machine - Pass', 'a' ,'b', 'c', 'Machine - Fail', 'a','b','c'])
plt.show()