【问题标题】:Differences with stat_summary() when plotting log10 values绘制 log10 值时与 stat_summary() 的差异
【发布时间】:2021-05-04 13:34:22
【问题描述】:

我对下面代码的结果有点困惑。我称为 aux (the data) 的数据框包含一个因子和一个定量变量。我想根据因子的水平绘制定量变量的平均值。

代码还会创建第二个数据框,其中包含这些分组的平均值。

然后有两个情节。第一个对我来说很好:它以两种不同的方式绘制正确的值,即在原始 aux 数据框上使用 stat_summary()geom_point( )aux.grouped 数据框上。

但是,当我尝试绘制定量变量的 log10 值时,stat_summary() 并没有绘制出我预期的结果。我知道在 ggplot 映射线上的 aes 下使用 log10 可能是这个问题的根源。我没有得到的是 stat_summary() 正在绘制什么,以及为什么它不绘制,如果涉及到不匹配的映射问题,则改为非 log10 值。

非常感谢您的帮助。

最好的,

大卫

aux <- read.table("aux.txt", header = TRUE, sep = "\t")

aux$nb.NAs <- factor(aux$nb.NAs)

aux.grouped <- aux %>% 
  group_by(nb.NAs) %>% 
  dplyr::summarise(mean_values = mean(values))

ggplot(aux, aes(x = nb.NAs, y = values, group = nb.NAs)) +
  stat_summary(geom = "point", fun = "mean", colour = "red", size = 10) +
  geom_point(data = aux.grouped, aes(x = nb.NAs, y = mean_values), colour = "blue", size = 5)
                        
ggplot(aux, aes(x = nb.NAs, y = log10(values), group = nb.NAs)) +
  stat_summary(geom = "point", fun = "mean", colour = "red", size = 5) +
  geom_point(data = aux.grouped, aes(x = nb.NAs, y = log10(mean_values)), colour = "blue", size = 5) 

【问题讨论】:

  • 您能否提供您的数据集样本,以便我们重新运行该代码?你可以用 dput(data) 来做到这一点
  • 嗨,里奥,喜欢这个吗?
  • 结构(列表(nb.NAs =结构(c(2L,1L,1L,2L,2L,1L,2L,2L,1L,1L),.Label = c(“2”, “3”),class= “因子”),值= C(5584949.80357048,8014873.492117,17206608.4238154,1524223.86730749,5882593.98508629,19907181.0901551,4945004.91561103,20886241.7691373,51093766.9511132,6436423.4434915)),row.names = C(1L,2L,3L, 4L, 5L, 6L, 7L, 8L, 12L, 16L), class= "data.frame")
  • 这不是全部,但我想它会做。原始辅助数据集可在我原始帖子的链接中找到。谢谢。

标签: r ggplot2


【解决方案1】:

我认为这回答了你的问题。

df<-structure(list(nb.NAs = structure(c(2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L),
                                      .Label = c("2", "3"), class = "factor"),
                   values = c(5584949.80357048, 8014873.492117, 17206608.4238154, 
                              1524223.86730749, 5882593.98508629, 19907181.0901551, 
                              4945004.91561103, 20886241.7691373, 51093766.9511132, 
                              6436423.4434915)), 
              row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 12L, 16L), class = "data.frame") 


df$nb.NAs <- factor(df$nb.NAs)

aux.grouped <- df %>% 
  group_by(nb.NAs) %>% 
  dplyr::summarise(mean_values = mean(values), mean_log10 = mean(log10(values)), 
                   log10_mean = log10(mean(values)))

当您运行此代码时,您会看到我以两种不同的方式计算 log10 值,第一种是获取 log10 值的平均值,而第二种是获取平均值的 log10 值。您的第二个情节遵循后者(7.31 和 6.89)。这就是为什么红点和蓝点之间存在差异的原因。您可以将这些值与第二个图匹配并查看差异。

# A tibble: 2 x 4
  nb.NAs mean_values mean_log10 log10_mean
* <fct>        <dbl>      <dbl>      <dbl>
1 2        20531771.       7.19       7.31
2 3         7764603.       6.74       6.89

【讨论】:

  • 确实!非常感谢 Leo。我没有想到。最好的,
猜你喜欢
  • 2015-12-22
  • 2013-06-08
  • 2019-11-26
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多