当我试图生成一个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")

R相关问答推荐

用R从API中提取数据

如何删除字符串中重复的字符序列?

为什么stat_bin在R中的ggplot中显示错误的数字?

如何将y轴上的线定位得彼此更近

根据收件箱中的特定值提取列名

如何删除R中除某些特定名称外的所有字符串?

手动打印线型gplot

为什么横向页面会导致officeverse中的页码/节头/页脚出现问题?

在特定Quarto(reveal.js)幻灯片上隐藏徽标

在另一个函数中调用ggplot2美学

可以替代与NSE一起使用的‘any_of()’吗?

比较理论阿尔法和经验阿尔法

根据1个变量绘制 colored颜色 发散的 map ,由另一个变量绘制饱和度,ggplot2不工作

如何创建累加到现有列累计和的新列?

自动STAT_SUMMARY统计与手动标准误差之间的差异

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

在r中整理图例和堆叠图的问题

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

R:使用ApexCharge更改标签在饼图中的位置