问题描述
我让这个question知道如何在同一图中绘制许多图形。遵循我喜欢并接受的答案,可以使用ggplot()
函数。
现在使用ggplot()
,我收到以下消息,通知您已删除该图的缺失值:
Warning message:
Removed 33 row(s) containing missing values (geom_path).
从产生的绘图和可视化效果来看,ggplot()
删除了33行之后,我对数据感到满意。
我知道如何删除NA的行,但是在这里我不明白是否ggplot()
删除了至少有一个变量存在NA的行 OR 删除了所有变量都是NA的行,知道我有7个变量,并且有一些行的所有变量都完全不适用,而许多行仅包含某些变量的不适用。
问题:尽管该图的行已被删除,但如何从数据中完全删除“检测到的33行”这些行呢?
解决方法
如果输入是x和y列,但
ggplot 会删除用作 ggplot 的输入 aes 的列的NA不适用的行也具有y列,如果x或y具有NA,则只会删除行。
这里是一个例子:
library(ggplot2)
x <- head(mtcars)
# add NA to some column we don't use for ggplot
x$am[ 1 ] <- NA
ggplot(x,aes(cyl,mpg)) + geom_point()
# no warnings
# now add NA to column that we use for plotting
x$cyl[ 1 ] <- NA
ggplot(x,mpg)) + geom_point()
# Warning message:
# Removed 1 rows containing missing values (geom_point).
# to avoid that warning,we can explicitly set it to remove NA
ggplot(x,mpg)) + geom_point(na.rm = TRUE)
# no warnings
要从数据中删除行,请检查所选列是否具有NA:
x_clean <- x[ !(is.na(x$cyl) | is.na(x$mpg)),]
ggplot(x_clean,mpg)) + geom_point()
# no warnings
编辑1:要基于注释应用数据,请尝试以下操作,请参见filter
:
Data <- bind_rows(...)
Data %>%
mutate(data = paste0('Data',data)) %>%
pivot_longer(-c(data,Time)) %>%
filter(!(is.na(Time) | is.na(value))) %>%
ggplot(aes(x = factor(Time),y =value),group = name,color = name))+
geom_line()+
facet_wrap(.~data,scales = 'free',ncol = 1) +
xlab('Time')
编辑2:要“知道”哪些数据正在ggplot中,为什么不将过滤后的干净数据作为单独的对象而不是管道进行保存,请参阅:
Data <- bind_rows(...)
cleanData <- Data %>%
mutate(data = paste0('Data',Time)) %>%
filter(!(is.na(Time) | is.na(value)))
ggplot(cleanData,aes(x = factor(Time),color = name)+
geom_line()+
facet_wrap(.~data,ncol = 1) +
xlab('Time')
,
这些行可能具有NA
值,或者它们可能超出您设置的轴限制的范围。 ggplot()
在两种情况下都会产生相同的警告。这是后者的示例。
这是内置的mtcars
数据集。请注意,没有丢失的值:
mtcars
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
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
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
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
如果我构建以下图,则会收到有关缺少值的行的ggplot警告。
library(ggplot2)
ggplot(mtcars,aes(x = wt,y = qsec)) +
geom_point() +
scale_x_continuous(limits = c(2,4)) +
scale_y_continuous(limits = c(16,22))
Warning message:
Removed 14 rows containing missing values (geom_point).
具有“缺失值”的14行是数据超出轴限制范围的14行。他们在这里。
library(dplyr)
mtcars %>%
filter(wt < 2 | wt > 4 | qsec < 16 | qsec > 22)
mpg cyl disp hp drat wt qsec vs am gear carb
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 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
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
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
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
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
在尝试从数据中删除“缺失值”之前,请检查绘图参数是否排除了某些数据。