gpt4 book ai didi

r - 我为什么会得到“position_dodge需要恒定宽度”,即使在ggplot2中宽度不变

转载 作者:行者123 更新时间:2023-12-03 13:21:01 24 4
gpt4 key购买 nike

对于ggplot2中的简单条形图,我收到一条我不明白的警告消息

> df <- data.frame(X = 127:131, Y = rnorm(5))
> df
X Y
1 127 0.9391077
2 128 -0.9392529
3 129 -1.1296221
4 130 1.1454907
5 131 1.8564596
> ggplot(df) + geom_bar(aes(X,Y), stat ="identity", position = "dodge")
Warning message:
position_dodge requires constant width: output may be incorrect


它似乎仅在某些X值范围内发生。我已经在Google上搜索了有关此信息,但似乎所有这些都在谈论宽度真正不同的情况,或者stat不是“ identity”的情况。在这种情况下,X值只是整数,因此应该很简单。

生成的图表看起来还不错,所以我对忽略我不理解的警告感到不安。

知道发生了什么吗?

最佳答案

设置options(warn = 2, error = recover),然后重新运行代码可让我们发现问题。

collide函数(调用堆栈中的数字16)内部,有这段代码:

if (!zero_range(range(widths))) {
warning(name, " requires constant width: output may be incorrect",
call. = FALSE)
}


Floating point rounding errors表示 widths采用略有不同的值。

format(widths, digits = 22)
# [1] "0.9000000000000056843419" "0.8999999999999914734872" "0.8999999999999772626325"


用于检查数字是否相同的 tolerance太严格:大约2.2e-14。

args(zero_range)
# function (x, tol = .Machine$double.eps * 100)
# NULL
.Machine$double.eps * 100
# [1] 2.220446e-14


因此,警告是错误的。不用担心

关于r - 我为什么会得到“position_dodge需要恒定宽度”,即使在ggplot2中宽度不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14476961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com