Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change outliers to some other colors in a scatter plot

If I have a scatter plot like thisenter image description here

I was wondering is there any way to change the obvious outliers, like the three on the top, to some other colors in the same plot?

like image 762
xzt Avatar asked Dec 14 '22 02:12

xzt


1 Answers

First, you need to find a criterion for "outliers". Once you have that, you could mask those unwanted points in your plot. Selecting a subset of an array based on a condition can be easily done in numpy, e.g. if a is a numpy array, a[a <= 1] will return the array with all values bigger than 1 "cut out".

Plotting could then be done as follows

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()

producing

enter image description here

Here, we plot points from a normal distribution, colorizing all points outside the distribution's width differently.

like image 139
ImportanceOfBeingErnest Avatar answered Mar 24 '23 06:03

ImportanceOfBeingErnest