18

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値の特定の範囲でのみ発生するようです。これに関する情報をグーグルで検索しましたが、幅が本当に異なる場合、または統計が「アイデンティティ」ではない場合について話しているようです。この場合、X 値は単なる整数であるため、単純にする必要があります。

生成されたチャートは問題ないように見えるので、理解できない警告を無視することに不安を感じています。

何が起こっているのですか?

4

1 に答える 1

39

を設定options(warn = 2, error = recover)してコードを再実行すると、問題を見つけることができます。

関数内collide(コール スタックの 16 番) には、次のコードがあります。

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

浮動小数点の丸め誤差widthsは、がわずかに異なる値を取ることを意味します。

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

数値が同じであることを確認するための許容誤差は厳しすぎます: 約 2.2e-14。

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

したがって、警告は誤りです。ご心配なく。

于 2013-01-23T11:10:11.390 に答える