如何在散点图中将异常值更改为其他颜色

xzt*_*xzt 2 python matplotlib

如果我有这样的散点图在此输入图像描述

我想知道有没有办法将明显的异常值(如顶部的三个)更改为同一个图中的其他颜色?

Imp*_*est 7

首先,您需要找到"异常值"的标准.一旦你有了,你就可以掩盖你的情节中不需要的点.基于条件选择数组的子集可以很容易地在numpy中完成,例如,如果a是numpy数组,a[a <= 1]将返回具有大于1"cut out"的所有值的数组.

然后可以如下进行绘图

import numpy as np
import matplotlib.pyplot as plt

num= 1000
x= np.linspace(0,100, num=num)
y= np.random.normal(size=num)

fig=plt.figure()
ax=fig.add_subplot(111)
# plot points inside distribution's width
ax.scatter(x[np.abs(y)<1], y[np.abs(y)<1], marker="s", color="#2e91be")
# plot points outside distribution's width
ax.scatter(x[np.abs(y)>=1], y[np.abs(y)>=1], marker="d", color="#d46f9f")
plt.show()
Run Code Online (Sandbox Code Playgroud)

生产

在此输入图像描述

在这里,我们从正态分布绘制点,对分布宽度之外的所有点进行不同着色.