首页 > 解决方案 > 绘制 log10 值时与 stat_summary() 的差异

问题描述

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

该代码还创建了包含这些分组平均值的第二个数据框。

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

但是,当我尝试绘制定量变量的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) 

标签: rggplot2

解决方案


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

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

推荐阅读