【问题标题】:Matplotlib scatter plot label not distinguishing pointsMatplotlib散点图标签不区分点
【发布时间】:2018-07-25 10:25:23
【问题描述】:

我正在尝试在散点图中绘制一系列 IP 地址,然后根据它们的“检测”标记它们,它们是 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()

【问题讨论】:

标签: python pandas matplotlib scatter-plot


【解决方案1】:

您并没有告诉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()

【讨论】:

  • 完美运行!谢谢!
猜你喜欢
  • 2017-08-24
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2021-09-04
  • 2014-10-20
  • 2020-07-22
相关资源
最近更新 更多