首页 > 解决方案 > 如何从汇总函数返回结果?

问题描述

我做了一个ggplot,我想使用一个函数的结果。

如何返回stat_summary_2d的结果?

ggplot(diamonds, aes(carat, depth, z = price))+
  stat_summary_2d(fun =function(x)mean(x))

标签: rggplot2

解决方案


如果您要问如何重用ggplot2统计摘要功能的实现,目前使用公共 API 并不容易实现。您可以查看ggplot2's internals 并复制粘贴您需要的部分。但这应该被视为一种不可靠的 hack,它可能会在任何软件包升级后中断。

bin2d 的核心功能可在ggplot2::StatBin2d$compute_group. 但是要调用它,您将需要一些不易手工构建的情节组件。

在另一个答案中,我列出了在典型案例中构建图表时完成的所有步骤。功能ggplot2:::ggplot_build.ggplot将向您显示详细信息。调用统计计算的相关行是

data <- by_layer(function(l, d) l$compute_statistic(d, layout))

在开始之前,您需要执行所有先前的步骤。在你的例子中,它最终会给出:

# A tibble: 238 x 9
    xbin  ybin value     x width     y height PANEL group
   <int> <int> <dbl> <dbl> <dbl> <dbl>  <dbl> <fct> <int>
 1     6     1 4206  1.04  0.160  42.6   1.20 1        -1
 2     6     2 4032  1.04  0.160  43.8   1.20 1        -1
 3     1     8  945  0.240 0.160  51.0   1.2  1        -1
 4     8     8 6727  1.36  0.160  51.0   1.2  1        -1
 5     2     9 1166  0.401 0.160  52.2   1.20 1        -1
 6     3     9 1293  0.561 0.160  52.2   1.20 1        -1
 7     4     9 1895  0.722 0.160  52.2   1.20 1        -1
 8     2    10 1012. 0.401 0.160  53.4   1.2  1        -1
 9     4    10 2164  0.722 0.160  53.4   1.2  1        -1
10     5    10 2815  0.882 0.160  53.4   1.2  1        -1
# ... with 228 more rows

技巧:可以使用三冒号访问包的内部函数pkg:::fun


推荐阅读