当我试图生成一个情节时,我收到了这个警告ggplot.
在线研究了一段时间之后,许多人建议我的数据库包含空值或一般缺少数据,但事实并非如此.
在这个问题中,接受的答案如下:
警告意味着某些元素因为超出指定范围而被删除
我想知道这个范围究竟是指什么,以及如何有人手动增加这个范围以避免所有警告?
eip*_*i10 68
您所看到的行为是由于如何ggplot2处理超出绘图轴范围的数据.您可以根据是否使用scale_y_continuous(或等效ylim)或coord_cartesian设置轴范围来更改此行为,如下所述.
library(ggplot2)
# All points are visible in the plot
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,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).
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,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")
Run Code Online (Sandbox Code Playgroud)
只是为了完成eipi10给出的答案。
我没有使用scale_y_continuousnor也面临着同样的问题coord_cartesian。
冲突来自我定义的x轴limits = c(1, 30)。如果您想“避开”杠,似乎这样的限制不能提供足够的空间,因此R仍然会引发错误
删除了包含缺失值的8行(geom_bar)
调整x轴的极限以limits = c(0, 31)解决该问题。
总之,即使您没有对y轴设置限制,也请检查x轴行为以确保有足够的空间
我知道这个问题已经有了答案,但这是您的另一个可能的解决方案。由于您没有提供示例代码,我无法确定。
如果你只是想摆脱它,这对我来说意味着你对输出没问题。然后您可以尝试以下操作:
na.rm=TRUE到geom_something喜欢:geom_line(..., na.rm=TRUE )这明确告诉 geom_line (和 geom_path)可以删除 NA 值。
警告:删除了包含缺失值的 k 行(geom_path)
这主要告诉你三件事:
警告没有告诉您的是为什么这些行缺少 (NA) 值,只有您可能知道。
一个常见的原因来自于对规模的限制。喜欢scale_x_datetime或scale_y_continuous。
这是有道理的,因为要绘制的 (X,Y) 对不需要为 NA。
当您将 X 刻度设置为较大值而没有 Y 时,或者您的 Y 数据为 NA。您将得到 (X,Y) 点,其中两者之一均为 NA。
您可能出于不同的原因想要设置更大的比例,但 ggplot 总是会发现没有关联的 Y 值,并且触发警告而不是错误是有意义的。
祝你今天过得愉快。
| 归档时间: |
|
| 查看次数: |
77568 次 |
| 最近记录: |