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

时间:2016-10-30 20:00:51

标签: python matplotlib

如果我有这样的散点图enter image description here

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

2 个答案:

答案 0 :(得分:6)

首先,您需要找到“异常值”的标准。一旦你有了,你就可以掩盖你的情节中不需要的点。 基于条件选择阵列的子集可以很容易地在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()

生产

enter image description here

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

答案 1 :(得分:0)

ImportanceOfBeingErnest有一个很好的答案。如果我有一个与数据点的枚举类别相对应的数组,则这是一种方法(在可视化预先划分为类的数据时特别有用)。

import numpy as np
import matplotlib.pyplot as plt

num = 1000
x= np.random.rand(1,100)
y= np.random.rand(1,100)*2

# Creating a simple data point classification criteria, classes in this case will be 0, 1 and 2
classes = np.round(y)

# Passing in the classes for the "c" argument is super convinient
plt.scatter(x,y, c=classes,cmap=plt.cm.Set1)
plt.show()

对应的散点图,将图形分为3个彩色区域: