0

これは「おやおや」の簡単な答えになると確信していますが、ggplot2(0.9.3)の基本的なパラダイムを理解するのは常に困難です。次のデータとヘルパー関数を使用します。

ltd <- data.frame(r = c(rnorm(5, 5, 1.5), rnorm(5, 8, 2)),
    f1 = c(rep("L", 5), rep("H", 5)))

seXy <- function (x) {
    m <- mean(na.omit(x))
    se <- sd(x, na.rm = TRUE)/sqrt(length(na.omit(x)))
    u <- m + se
    l <- m - se
    c(y = m, ymin = l, ymax = u)
    }

このqplotリクエストは正常に機能します。

tp <- qplot(x = f1, y = r, data = ltd, geom = "point")
tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange")
print(tp)

ただし、このggplot2要求は線の範囲を描画せず、エラーも発生しません(また、代替のコメント付きの線を使用しても、何も変わりません)。

tp <- ggplot()
tp <- tp + geom_point(aes(x = f1, y = r), data = ltd)
#tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange")
tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange", 
        aes(ymin = ..ymin.., ymax = ..ymax..))
print(tp)

ショーを表示するために2番目のアプローチは何を必要とlinerangeしますか?私は明らかに何かを誤解しています。もちろん、これはMWEであり、実際のコンテキストはより複雑ですが、この単純な例を理解せずにトラブルシューティングすることはできません。qplotバックグラウンドで何かをしているように見えますが、何がわかりません。ありがとう。

4

1 に答える 1

1

問題は、データを でのみ定義しgeom_point()stat_summary()使用しないことです。

関数に andを入れるdataaes()、が得られます。ggplot()stat_summary()linerange

ggplot(ltd,aes(x = f1, y = r))+geom_point()+
  stat_summary(fun.data = "seXy", color = "red", geom = "linerange")

dataandaes()が内部で定義されている場合、同じ結果が得られます。stat_summary()

tp <- ggplot()
tp <- tp + geom_point(aes(x = f1, y = r), data = ltd)
tp <- tp + stat_summary(data=ltd,aes(x = f1, y = r),fun.data = "seXy", color = "red", geom = "linerange")
print(tp)
于 2013-01-17T16:19:47.830 に答える