📅  最后修改于: 2023-12-03 15:10:48.293000             🧑  作者: Mango
在数据可视化领域,ggplot2
是一个非常强大且流行的图形库。然而,数据集中存在异常值是一个常见问题。异常值可能会扰乱我们对数据集的理解,因此在分析之前需要将它们剔除或调整。在本教程中,我们将探讨如何使用 ggplot2
来识别和展示标签异常值。
我们将选择一个带有标签异常值的数据集来向您展示如何使用 ggplot2
进行可视化。
我们将使用 R 内置的 mtcars
数据集,新建一个名为 mtcars
的数据框:
data(mtcars)
df <- mtcars[c(1:10, 21:32), ]
对于本文,我们将挑选了一些数据来展示,包括 mpg
,cyl
,hp
和 wt
等变量。
首先,我们将绘制 mpg
和 hp
变量的散点图,使用颜色对 cyl
变量进行分类:
library(ggplot2)
ggplot(df, aes(x = mpg, y = hp, color = as.factor(cyl))) +
geom_point()
输出为:
![](scatterplot.png)
从结果中我们可以看到,该数据集已经包含了标签异常值。接下来,我们将学习如何识别和展示它们。
我们可以将 ggplot2
的 identify()
函数结合使用,来识别和删除标签异常值。
首先,绘制散点图:
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
我们可以看到变量 mpg
和 hp
目前只涉及到 27 个数据点,而不是原始的 32 个。
最后,我们来绘制一张没有标签异常值的散点图:
library(ggplot2)
ggplot(df, aes(x = mpg, y = hp, color = as.factor(cyl))) +
geom_point() ->
p3
print(p3)
![](scatterplot_without_outliers.png)
我们可以看到,有了 ggplot2
的帮助,我们成功地识别并删除了标签异常值,从而得到了更准确的数据可视化。
本教程展示了如何使用 ggplot2
库对数据集中的标签异常值进行识别和展示。我们使用了 ggplot2
的 identify()
函数,在图形窗口中手动选择并删除了标签异常值。
这是一种简单却强大的方法,可以帮助我们更清楚地了解数据集并得到更准确的可视化结果。