1

loglog スケールで 2 つのベクトル (x と y) に格納されているデータをプロットしたいと思います。さらに、平均値と標準偏差 (後者はバーを使用) を追加したいと考えています。

私の問題は、y-data-vector にゼロがあり、「平均」関数が引数として log(0) (=-Inf) を取得し、-Inf を返すことです。

qplot(x, y, log="xy") + stat_summary(fun.y=mean, geom="point")

ログに記録されたデータではなく、「通常の」データで「平均」関数を機能させるにはどうすればよいですか?

乾杯、

マヌエル

4

2 に答える 2

2

変換前の統計を計算します。

今のところ対数スケールを無視して、プロットしたいのはこのようなものだと思います

p <- ggplot(dfr) + 
  geom_point(aes(x, y)) +       
  geom_point(
    aes(
      x = mean(x), 
      y = mean(y)
    ), 
    colour = "blue",
    size = 5
  ) +
  geom_rect(
    aes(
      xmin = mean(x) - sd(x),
      xmax = mean(x) + sd(x), 
      ymin = mean(y) - sd(y),
      ymax = mean(y) + sd(y)
    ),
    alpha = 0.2
  ) 
p

対数スケールの追加は通常どおり行われます

p +
  scale_x_log10() + 
  scale_y_log10() 

もちろん、ゼロはグラフに表示されません。それらに対処するには、データセットからそれらを削除するか、小さな正の数に置き換えるかを選択できます。


編集: x 値でグループ化された y 値の統計が必要な場合は、x 変数が要因のように聞こえます。その場合、おそらく棒グラフが必要です。棒グラフの対数 y スケールは悪い考えですが、代わりに平方根変換を正当化できる可能性があります。

于 2011-04-20T15:24:55.133 に答える
1

のヘルプ ページを参照してくださいcoord_trans。を使用coord_trans(xtrans = 'log10', ytrans = 'log10')すると、すべての統計が計算された後に座標変換が行われるため、対数プロットを作成するのに役立ちます。

于 2011-04-20T15:24:37.987 に答える