r - 如何从汇总函数返回结果?
问题描述
我做了一个ggplot,我想使用一个函数的结果。
如何返回stat_summary_2d的结果?
ggplot(diamonds, aes(carat, depth, z = price))+
stat_summary_2d(fun =function(x)mean(x))
解决方案
如果您要问如何重用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
。
推荐阅读
- webdriver-io - 无法在 WebdriverIO 中使用 $$ 登录与元素交互
- mongodb - 我们可以将 upsert 与更新管道一起使用吗?
- react-native - 从 /tmp/gradle14484220662220949872.bin 偏移量 95036 中的二进制存储读取数据存在问题?真的
- windows-10 - 我在 hugo 中遇到“访问被拒绝”错误
- html - 在切换按钮调用时从 api 接收数据时未显示数据
- python - Pandas 根据现有数据框列中的唯一值有效地创建新数据框
- mysql - FLASK:如何与mysql服务器建立连接?
- c# - AutoMapper Un-Flatning 3 个级别的对象嵌套列表
- javascript - 反应:从同一组件的多个映射实例中将状态设置为单个组件
- php - 在 laravel 之间的位置是如此的字面