【问题标题】:How to change outliers to some other colors in a scatter plot如何在散点图中将异常值更改为其他颜色
【发布时间】:2017-03-12 23:54:36
【问题描述】:

如果我有这样的散点图

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

【问题讨论】:

  • 这是一个很难回答的问题,因为离群值并不是一个具有真实定义的术语。 This post 可能会有所帮助。

标签: python matplotlib


【解决方案1】:

首先,您需要找到“异常值”的标准。一旦你有了它,你就可以在你的情节中掩盖那些不需要的点。 根据条件选择数组的子集可以在 numpy 中轻松完成,例如如果 a 是一个 numpy 数组,a[a <= 1] 将返回所有值大于 1 的数组“切出”。

然后可以按如下方式进行绘图

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

生产

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

【讨论】:

    【解决方案2】:

    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 个彩色区域的相应散点图:

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2017-01-06
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2023-01-26
      • 2022-01-23
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多