当我试图生成一个ggplot
的绘图时,我得到了这个警告.
在网上搜索了一段时间后,许多人建议我的数据库包含空值或总体上缺失的数据,但事实并非如此.
In this question.公认的答案如下:
警告意味着某些元素由于超出指定范围而被删除
我想知道这个范围到底指的是什么,人们如何手动增加这个范围以避免所有警告?
当我试图生成一个ggplot
的绘图时,我得到了这个警告.
在网上搜索了一段时间后,许多人建议我的数据库包含空值或总体上缺失的数据,但事实并非如此.
In this question.公认的答案如下:
警告意味着某些元素由于超出指定范围而被删除
我想知道这个范围到底指的是什么,人们如何手动增加这个范围以避免所有警告?
您看到的行为是由于ggplot2
如何处理绘图轴范围之外的数据.您可以根据使用scale_y_continuous
(或相当于ylim
)还是coord_cartesian
来设置轴范围来更改此行为,如下所述.
library(ggplot2)
# All points are visible in the plot
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
在下面的代码中,hp=335的一个点位于绘图的y范围之外.此外,因为我们使用scale_y_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")