Python 如何使用分配不同颜色的散点图绘制多个分类数据?

Python 如何使用分配不同颜色的散点图绘制多个分类数据?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有两列分类变量,我想根据相同的x轴绘制每列 例如,对于下面的csv文件,我希望根据状态打印类型并指定颜色。例如,类型a表示为“x”,类型b表示为“o”。如果类型“a”的状态为“是”,则其为绿色或红色,与类型“b”相同 start_time,type,status 2017-08-21 13:41:39.899,a,yes 2017-08-21 14:11:21.283,b,yes 2017-08-21 14:22:09.590,b,no 2017-08-21 14:27:56.175,b,ye

我有两列分类变量,我想根据相同的x轴绘制每列

例如,对于下面的csv文件,我希望根据状态打印类型并指定颜色。例如,类型a表示为“x”,类型b表示为“o”。如果类型“a”的状态为“是”,则其为绿色或红色,与类型“b”相同

start_time,type,status
2017-08-21 13:41:39.899,a,yes
2017-08-21 14:11:21.283,b,yes
2017-08-21 14:22:09.590,b,no
2017-08-21 14:27:56.175,b,yes
2017-08-21 15:51:07.950,a,yes
2017-08-21 17:37:37.959,a,no
2017-08-21 18:53:37.040,b,yes
2017-08-21 18:54:34.282,a,no
2017-08-21 20:36:36.180,b,yes
2017-08-21 20:42:23.579,a,no
我尝试使用matplotlib,
plt.scatter()
,但无法得到我想要的。请帮助。此外,我还使用开始时间作为数据帧中的索引。 编辑:
X轴是开始时间

我认为您可以通过创建较小的数据帧来执行您想要执行的操作,该数据帧包含您想要隔离的每个类别(a&yes、a&no、b&yes和b&no),执行以下操作:

a_and_yes= df.loc[(df['type']=='a') & (df['status'])=="yes"] # for each categories

然后,您可以选择对此数据框感兴趣的不同值,并以所需的样式分散每个值。我要做的是将您的数据从csv中分割为“是”和“否”数据框,并使用不同的颜色分别绘制它们:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

csv_data = pd.read_csv("data.csv") # csv file containing data provided in question description
df = pd.DataFrame(csv_data)

yes = df[df.status == 'yes']
no = df[df.status == 'no']

plt.scatter(yes.start_time, yes.type, marker='o', c='green')
plt.scatter(no.start_time, no.type, marker='o', c='red')
plt.xticks(rotation=90)
plt.show()
上述代码将导致以下绘图(在我的屏幕截图中,轴标签的sry被切断):


假设要在
x=start\u time
y='y'
上绘制散点图,可以使用
sns.scatterplot

fig, ax = plt.subplots(figsize=(10,6))
sns.scatterplot(x='start_time', y='y',
                style='type',
                hue='status',
                data=df,
                ax=ax)
ax.set_xlim(df.start_time.min(), df.start_time.max())
plt.show()


您提供了一个带有分类值的数据集摘录。x轴和y轴的数据是什么?您只有类型
a
b
,或者您有多少类型?只有两种类型“a”和“b”