📜  标签异常值 ggplot (1)

📅  最后修改于: 2023-12-03 15:10:48.293000             🧑  作者: Mango

标签异常值 ggplot

介绍

在数据可视化领域,ggplot2 是一个非常强大且流行的图形库。然而,数据集中存在异常值是一个常见问题。异常值可能会扰乱我们对数据集的理解,因此在分析之前需要将它们剔除或调整。在本教程中,我们将探讨如何使用 ggplot2 来识别和展示标签异常值。

我们将选择一个带有标签异常值的数据集来向您展示如何使用 ggplot2 进行可视化。

步骤
1. 导入数据集

我们将使用 R 内置的 mtcars 数据集,新建一个名为 mtcars 的数据框:

data(mtcars)

df <- mtcars[c(1:10, 21:32), ]

对于本文,我们将挑选了一些数据来展示,包括 mpgcylhpwt 等变量。

2. 绘制散点图

首先,我们将绘制 mpghp 变量的散点图,使用颜色对 cyl 变量进行分类:

library(ggplot2)

ggplot(df, aes(x = mpg, y = hp, color = as.factor(cyl))) +
  geom_point()

输出为:

![](scatterplot.png)

scatterplot.png

从结果中我们可以看到,该数据集已经包含了标签异常值。接下来,我们将学习如何识别和展示它们。

3. 识别标签异常值并删除

我们可以将 ggplot2identify() 函数结合使用,来识别和删除标签异常值。

首先,绘制散点图:

library(ggplot2)

ggplot(df, aes(x = mpg, y = hp, color = as.factor(cyl))) +
  geom_point() -> p1

print(p1)

然后,使用 identify() 函数来选择我们要删除的数据点:

p1 + ggplot2::geom_point(aes(x = mpg, y = hp, color = as.factor(cyl)), size = 3) + 
  ggplot2::geom_text(aes(label = row.names(df)), size = 3) ->
  p2

print(p2)

res <- identify(p2)

图形窗口会提示您选择图形上要删除的点。选择它们并关闭窗口。

Click to identify points

选择后,R 控制台会输出哪些点被选中了:

[1] 1 5 7 9

我们使用 subset() 函数来删除这些点:

df <- subset(df, -which(rownames(df) %in% rownames(df)[res]))

print(df)
   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4        21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag    21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710       22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive   21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Valiant          18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360       14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D        24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230         22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280         19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C        17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE       16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL       17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Merc 450SLC      15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Fiat 128         32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic      30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla   33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona    21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Dodge Challenger 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin      15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28       13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Fiat X1-9        27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2    26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Lotus Europa     30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L   15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino     19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6

我们可以看到变量 mpghp 目前只涉及到 27 个数据点,而不是原始的 32 个。

4. 绘制调整后的散点图

最后,我们来绘制一张没有标签异常值的散点图:

library(ggplot2)

ggplot(df, aes(x = mpg, y = hp, color = as.factor(cyl))) +
  geom_point() ->
  p3

print(p3)
![](scatterplot_without_outliers.png)

scatterplot_without_outliers.png

我们可以看到,有了 ggplot2 的帮助,我们成功地识别并删除了标签异常值,从而得到了更准确的数据可视化。

结论

本教程展示了如何使用 ggplot2 库对数据集中的标签异常值进行识别和展示。我们使用了 ggplot2identify() 函数,在图形窗口中手动选择并删除了标签异常值。

这是一种简单却强大的方法,可以帮助我们更清楚地了解数据集并得到更准确的可视化结果。