1

我想以 loglog 比例绘制存储在两个向量(x 和 y)中的一些数据。此外,我想添加平均值和标准推导(稍后使用条形图)。

我的问题是,我的 y-data-vector 中有零,然后“mean”函数将 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 回答