Python Matplotlib散点图标签不区分点

Python Matplotlib散点图标签不区分点,python,pandas,matplotlib,scatter-plot,Python,Pandas,Matplotlib,Scatter Plot,我试图在散点图中绘制一系列IP地址,然后根据它们的“检测”来标记它们,检测值为0或大于0 0 虽然这个情节确实被生成,但它将所有的点涂成相同的颜色,而不是用恶意的标签将它们分开,非常感谢您的帮助 df = pd.io.sql.read_sql('SELECT Date_scanned, IP, Detections FROM URLs', con=conn) df['Date_scanned']=df['Date_scanned'].str.split(" ").str[0] detection

我试图在散点图中绘制一系列IP地址,然后根据它们的“检测”来标记它们,检测值为0或大于0 0

虽然这个情节确实被生成,但它将所有的点涂成相同的颜色,而不是用恶意的标签将它们分开,非常感谢您的帮助

df = pd.io.sql.read_sql('SELECT Date_scanned, IP, Detections FROM URLs', con=conn)
df['Date_scanned']=df['Date_scanned'].str.split(" ").str[0]
detections = df['Detections'].values

for row in df:
    for x in detections:
        if x > 0:
            malicious = "Yes"
        else:
            malicious = "No"

    plt.scatter(df['Date_scanned'], df['IP'], label=malicious)
plt.legend(loc='best')
plt.show()

您没有告诉
scatter()

相反,您要做的是在一次调用中绘制条件为“恶意”的所有点,并指定使用哪种标记/颜色,然后在第二次调用非恶意条件时指定单独的标记

大概是这样的:

df = pd.io.sql.read_sql('SELECT Date_scanned, IP, Detections FROM URLs', con=conn)
df['Date_scanned']=df['Date_scanned'].str.split(" ").str[0]

plt.scatter(df.loc[df.Detections>0,'Date_scanned'], df.loc[df.Detections>0,'IP'], marker='o', color='red', label="YES")
plt.scatter(df.loc[df.Detections≤0,'Date_scanned'], df.loc[df.Detections≤0,'IP'], marker='x', color='blue', label="NO")

plt.legend(loc='best')
plt.show()

如果没有请提供模型数据,就很难提供完整的答案,尤其是check out工作得非常完美!谢谢!