R 解释ggplot2警告:“;删除了包含缺失值的k行;
当我试图使用R 解释ggplot2警告:“;删除了包含缺失值的k行;,r,ggplot2,R,Ggplot2,当我试图使用ggplot生成绘图时,我收到此警告 在网上研究了一段时间后,许多人建议我的数据库包含空值或一般缺失的数据,但事实并非如此 公认的答案如下: 警告意味着某些图元由于超出指定范围而被删除 我想知道这个范围到底指的是什么,人们如何手动增加这个范围以避免所有警告?您看到的行为是由于ggplot2如何处理绘图轴范围之外的数据。您可以根据是使用scale\u y\u continuous(或者等效地使用ylim)还是coord\u cartesian来设置轴范围来更改此行为,如下所述 libr
ggplot
生成绘图时,我收到此警告
在网上研究了一段时间后,许多人建议我的数据库包含空值或一般缺失的数据,但事实并非如此
公认的答案如下:
警告意味着某些图元由于超出指定范围而被删除
我想知道这个范围到底指的是什么,人们如何手动增加这个范围以避免所有警告?您看到的行为是由于
ggplot2
如何处理绘图轴范围之外的数据。您可以根据是使用scale\u y\u continuous
(或者等效地使用ylim
)还是coord\u cartesian
来设置轴范围来更改此行为,如下所述
library(ggplot2)
# All points are visible in the plot
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
在下面的代码中,hp=335的一个点位于绘图的y范围之外。此外,由于我们使用了scale\u y\u continuous
来设置y轴范围,因此该点不包括在由ggplot计算的任何其他统计或汇总度量中,例如线性回归线
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
scale_y_continuous(limits=c(0,300)) + # Change this to limits=c(0,335) and the warning disappars
geom_smooth(method="lm")
Warning messages:
1: Removed 1 rows containing missing values (stat_smooth).
2: Removed 1 rows containing missing values (geom_point).
在下面的代码中,hp=335的点仍在绘图的y范围之外,但该点仍包含在ggplot计算的任何统计或汇总度量中,如线性回归线。这是因为我们使用了coord_cartesian
来设置y轴范围,并且该函数在对数据进行其他计算时不排除绘图范围之外的点
如果将此曲线图与上一个曲线图进行比较,可以看到第二个曲线图中的线性回归线具有稍陡的坡度,因为计算回归线时会包括hp=335的点,即使它在曲线图中不可见
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
只是为了完成eipi10给出的答案 我面临着同样的问题,没有使用
scale\u y\u continuous
或coord\u cartesian
冲突来自x轴,我在x轴上定义了limits=c(1,30)
。如果你想“闪避”你的酒吧,这样的限制似乎不能提供足够的空间,所以R仍然会抛出错误
删除了包含缺失值的8行(几何图形栏)
将x轴的限制调整为限制=c(0,31)
解决了问题
总之,即使您没有对y轴设置限制,也要检查x轴的行为,以确保您有足够的空间,即使您的数据在指定的限制范围内(例如
c(0335)
),添加geom_jitter()
语句可能会将某些点推到这些限制之外,生成相同的错误消息
库(ggplot2)
范围(mtcars$hp)
#> [1] 52 335
#没有抖动——没有错误消息
ggplot(mtcars、aes(mpg、hp))+
几何点()+
刻度连续(限值=c(0335))
#抖动太大--这将生成错误消息
ggplot(mtcars、aes(mpg、hp))+
几何点()+
几何抖动(位置=位置抖动(w=0.2,h=0.2))+
刻度连续(限值=c(0335))
#>警告:已删除1行,其中包含缺少的值(几何点)。
由(v0.3.0)于2020-08-24创建,我也遇到了这个问题,但我希望在保持提供的范围的同时避免额外的错误消息。还有一个选项是在设置范围之前对数据进行子集设置,以便在不触发警告的情况下,按照您的喜好保留范围
library(ggplot2)
range(mtcars$hp)
#> [1] 52 335
# Setting limits with scale_y_continous (or ylim) and subsetting accordingly
## avoid warning messages about removing data
ggplot(data= subset(mtcars, hp<=300 & hp >= 100), aes(mpg, hp)) +
geom_point() +
scale_y_continuous(limits=c(100,300))
库(ggplot2)
范围(mtcars$hp)
#> [1] 52 335
#使用scale_y_continuous(或ylim)设置限制并相应地进行子集设置
##避免有关删除数据的警告消息
ggplot(数据=子集(mtcars,hp=100),aes(mpg,hp))+
几何点()+
连续刻度(限值=c(100300))
该问题在y
轴上有一个限制。由于此函数,值被限制在0和0.12之间:ylim(0,0.12)
一个可复制的示例将有助于回答此问题@LyzandeR似乎走上了正确的道路。这是经常错过的。是同一个人干的。又过了一段时间。。。叹气,谢谢!