通过向包装器传递 R 中的一组参数来生成 N 个 ggplot 图?

2024-01-04

我有一个输出数据框的函数,如下所示:
df:

# A tibble: 100 x 7
   test_idx train_user_id test_user_id train_idx     D isSame D_rank
      <int>         <int>        <int>     <int> <dbl> <lgl>   <dbl>
 1        5             1            1         2  51.3 TRUE        1
 2        1             1            1         4  53.0 TRUE        1
 3        5             1            1         4  56.9 TRUE        2
 4        1             1            1         5  61.6 TRUE        2
 5        1             1            1         3  63.1 TRUE        3
 6        1             1            1         2  66.7 TRUE        4
 7        5             1            1         5  66.8 TRUE        3
 8        5             1            1         3  67.7 TRUE        4
 9        9             1            2         4  85.3 FALSE       1
10        1             1            1         1  86.1 TRUE        5
# ... with 90 more rows

现在我想将不同的 D_rank 传递给 ggplot,以便为 1-5 中的每一个绘制适当的图:

for i = 1:5:

ggplot(df %>% filter(D_rank == i), aes(x = D, fill = isSame)) + 
geom_histogram(position = "dodge", bins = 50)

是否有任何类似地图的函数可以执行此操作并在本例中生成 5 个图,一般情况下生成 N 个图?

请告知我如何使用函数式编程技术来做到这一点。

Data

df <- 
  structure(list(test_idx = c(5L, 1L, 5L, 1L, 1L, 1L, 5L, 5L, 9L, 1L, 2L, 9L, 2L, 4L, 5L, 2L, 
                              2L, 7L, 2L, 7L, 4L, 9L, 7L, 3L, 7L, 
                              4L, 9L, 4L, 8L, 9L, 3L, 4L, 6L, 3L, 3L, 6L, 8L, 7L, 8L, 3L, 8L, 
                              6L, 6L, 6L, 8L, 10L, 10L, 10L, 10L, 10L, 9L, 7L, 8L, 7L, 7L, 
                              8L, 6L, 8L, 6L, 5L, 9L, 8L, 9L, 6L, 7L, 6L, 3L, 5L, 2L, 3L, 1L, 
                              4L, 2L, 3L, 1L, 9L, 4L, 2L, 8L, 9L, 2L, 3L, 5L, 3L, 5L, 4L, 7L, 
                              2L, 6L, 1L, 1L, 1L, 4L, 5L, 10L, 4L, 10L, 10L, 10L, 10L), 
                 train_user_id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                   1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                   1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                   1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                   2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                   2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                   2L, 2L, 2L), 
                 test_user_id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                  2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 
                                  2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 
                                  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                  2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                  1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 
                                  2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L), 
                 train_idx = c(2L, 4L, 4L, 5L, 3L, 2L, 5L, 3L, 4L, 1L, 5L, 3L, 3L, 3L, 1L, 4L, 1L, 
                               3L, 2L, 1L, 5L, 2L, 2L, 3L, 5L, 2L, 5L, 4L, 3L, 1L, 5L, 1L, 1L, 
                               1L, 2L, 2L, 5L, 4L, 1L, 4L, 2L, 3L, 5L, 4L, 4L, 3L, 4L, 1L, 5L, 
                               2L, 8L, 9L, 9L, 8L, 10L, 10L, 10L, 8L, 9L, 8L, 10L, 6L, 9L, 6L, 
                               6L, 8L, 7L, 10L, 8L, 10L, 8L, 10L, 10L, 9L, 10L, 7L, 8L, 6L, 
                               7L, 6L, 9L, 8L, 9L, 6L, 6L, 9L, 7L, 7L, 7L, 6L, 7L, 9L, 6L, 7L, 
                               7L, 7L, 8L, 9L, 10L, 6L), 
                 D = c(51.3423229472633, 53.0102437725091, 
                       56.9151660778132, 61.5523467358413, 63.1196128125039, 66.7242855371326, 
                       66.7691111976302, 67.743214491629, 85.2525195097706, 86.0735262618907, 
                       87.369258138824, 88.6330505796213, 92.2078873349342, 93.7741850369463, 
                       95.1397157285217, 96.2026472448337, 96.9228466441253, 97.2558549437615, 
                       97.3898735538098, 97.5469166830202, 97.5751612411753, 97.9406556127815, 
                       98.9451888862382, 98.9681351156223, 99.766578399879, 100.017199435986, 
                       101.975347576293, 103.097872757076, 105.041685508915, 105.057005748779, 
                       105.496841451745, 106.125579523708, 107.9382547829, 108.612088134172, 
                       108.68293031272, 109.695378380029, 111.325786796424, 111.881553810468, 
                       112.348809216118, 112.888668376943, 113.49128839933, 116.77296297582, 
                       118.888803029784, 120.903835929009, 122.27718661991, 156.423902775119, 
                       167.503309969173, 169.030474185564, 175.189202023024, 180.788562965559, 
                       48.5496720637138, 51.6482423994687, 53.4542060530927, 58.0128616909946, 
                       58.7971141941753, 60.2587315942066, 61.8538635626938, 62.222929248795, 
                       62.3865335970707, 63.0977052264393, 64.9664647267018, 65.5753112984812, 
                       67.0733197397097, 68.7553373383392, 70.3274318273383, 70.9561586831357, 
                       71.1969721821622, 71.9521437091054, 72.2811149112368, 72.7021293248461, 
                       73.1399655726917, 73.4746352292488, 75.5818665806328, 75.6687872897965, 
                       77.5832030879899, 77.9322604688026, 79.7123489004008, 80.1066357588347, 
                       80.1507338530155, 80.4540641900277, 80.5021221779844, 82.5711795226778, 
                       83.1590737400302, 83.279098613812, 83.4857610266722, 83.5491091101213, 
                       83.5564732281585, 84.1257094245289, 84.1402634222038, 88.6441050623217, 
                       90.2958220505986, 90.3323019629058, 91.8753888005348, 92.2496048477023, 
                       92.3323541396661, 93.3607071270989, 96.8024552048253, 102.947477697813, 
                       102.959949397485, 116.434702831121), 
                 isSame = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, 
                            TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, 
                            TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, 
                            TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 
                            FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, 
                            TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, 
                            TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
                            FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, 
                            FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, 
                            FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE), 
                 D_rank = c(1, 1, 2, 2, 3, 4, 3, 4, 1, 5, 1, 2, 2, 1, 5, 3, 4, 1, 5, 2, 2, 3, 
                            3, 1, 4, 3, 4, 4, 1, 5, 2, 5, 1, 3, 4, 2, 2, 5, 3, 5, 4, 3, 4, 
                            5, 5, 1, 2, 3, 4, 5, 1, 1, 1, 2, 3, 2, 1, 3, 2, 1, 2, 4, 3, 3, 
                            4, 4, 1, 2, 1, 2, 1, 1, 2, 3, 2, 4, 2, 3, 5, 5, 4, 4, 3, 5, 4, 
                            3, 5, 5, 5, 3, 4, 5, 4, 5, 1, 5, 2, 3, 4, 5)), 
            class = c("tbl_df", "tbl", "data.frame"), 
            row.names = c(NA, -100L))

split您的数据由df$D_rank并尝试imap. map or lapply也可以,但是imap可以轻松地迭代列表和该列表的名称——名称由.y(见下文)。这看起来很有用,因为我们可以使用.y例如,作为情节标题的一部分。

library(purrr)
library(ggplot2)
plot_list <- imap(split(df, df$D_rank), ~ {
  ggplot(.x, aes(x = D, fill = isSame)) +
           geom_histogram(position = "dodge", bins = 50) +
    labs(title = paste0("ID ", .y))
})
plot_list$`5`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过向包装器传递 R 中的一组参数来生成 N 个 ggplot 图? 的相关文章

  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 使用选定因子水平的值向 ggplot-barchart 添加水平线

    在这个情节中 df lt data frame factor as factor c rep A 3 rep B 3 Treatment c rep c A B C 2 values runif 6 0 1 ggplot df aes Tr
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • 使用点阵个性化 R 上显示的 X 轴值

    我收集了大量包含日期 客户端及其 NFS 使用情况的数据 我正在使用lattice R包进行绘图 正如对超级用户的建议 https superuser com questions 523195 plot custom log data on
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • R 中 SVG 图形的最佳设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想从 R 导出 SVG 图形 似乎有两种选择 RSvgDevice 和 Cairo 有人可以对这些包发表评论吗 是默认的还是明显比另一个
  • 如何将旋转的 NetCDF 转换回正常的纬度/经度网格?

    我有一个带有旋转坐标的 NetCDF 文件 我需要将其转换为正常的纬度 经度坐标 经度为 180到180 纬度为 90到90 library ncdf4 nc open dat nf 对于尺寸 它显示 1 5 variables exclu
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • HTTR GET 新错误:SSL 证书问题:证书已过期

    我已经运行这段代码几个月了 没有出现任何问题 今天我突然开始在我的两台 AWS 服务器上收到以下错误消息 错误 curl curl fetch memory url handle handle SSL证书问题 证书已过期 当尝试运行以下代码
  • 更改 R 中 ggplot geom_polygon 的颜色方案

    我正在使用地图库和 ggplot 的 geom polygon 创建地图 我只是想将默认的蓝色 红色 紫色配色方案更改为其他颜色 我对 ggplot 非常陌生 所以如果我没有使用正确的数据类型 请原谅 我使用的数据如下所示 gt head
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met

随机推荐

  • CoreData 问题:-[NSManagedObject setValue:]:无法识别的选择器发送到实例

    我昨天刚开始使用 CoreData 我快要疯了 我创建了一个使用 CoreData 的项目 勾选了框 使用 CoreData 创建了实体 然后为所有实体创建了 NSManagedObject 类 我想他们创建了实体的 setter 和 ge
  • Scala 与 Java 9 不兼容 - java.lang.NoClassDefFoundError

    在我的电脑上安装 Java 9 后运行一个示例 Scala SBT 项目 我就遇到了这个异常 我已经尝试了一些找到的解决方案 但一无所获 Java 9 和 Scala 之间是否存在不兼容的情况 斯卡拉版本 2 12 3 Java版本 jav
  • 如何返回导航堆栈?

    我的应用程序有 7 个后续视图控制器 VC1 VC7在我的导航栏中 我有一个带有操作的后退按钮 点击和长按 当在任何 VC 中长按后退按钮时 应用程序应转到 VC2 并呈现它 就好像用户从 VC1 转到 VC2 一样 具体来说 点击右后退按
  • 构建 ID 的测试结果

    作为计划构建的一部分 我运行并发布了多个具有不同测试运行标题的测试 我的场景是 在发布管道期间 我想获取为正在创建的版本的构建发布的每个测试运行标题的测试摘要 可以使用哪些 Azure DevOps API 或 API 组合来实现此目的 谢
  • 将光标传递到另一个活动是否安全?

    我正在尝试使用光标进行水平滑动 但我只是没有摸索某些东西 希望这里有人可以帮助我理解 我有一个显示项目列表的活动 它使用一个ListView由习俗支持CursorAdapter 并且该适配器由LoaderCallback 这都是标准的东西
  • 在Raspberry Pi上使用Selenium和Python登录zoom时出现错误401

    我正在学习使用 Selenium 我的目标是通过 Raspberry Pi 4 上的 python 程序打开 Zoom 运行粘贴的代码后 该程序按预期工作 打开放大浏览器 最大化窗口 选择并单击 登录 输入凭据 然后按 Enter 键 尝试
  • PARSE_DATETIME 格式化为一年中的某一天

    BigQuery 中与年份 j 格式设置元素一起使用的 PARSE DATETIME 函数存在问题 该函数似乎忽略了一年中的某一天元素 Eg select PARSE DATETIME Y j 2013243 returns 2013 01
  • PayPal API,寻找合适的 API

    我需要在我的网站中添加使用 PayPal 付款的选项 我想要一个 API 我可以在其中向 PayPal 发送信息并立即取回交易 ID 以便我可以将其保存在我的数据库中 哪种 API 最适合我 有没有办法做到这一点 我看到他们有这个清单 li
  • 使用 virtualenv 时在 pythonpath 中包含 Git 子模块

    我正在使用 Git 对 Django 项目进行版本控制 尽可能将所有不属于项目本身但项目所依赖的源代码作为 Git 子模块引入 这些生活在lib目录并且必须包含在 python 路径中 目录 文件布局如下所示 git docs lib my
  • Swift:如何使 UIView 在 UITableViewCell 中可点击?

    里面一个UITableViewCell 我正在尝试实现一个button与两个image and a text 看来是标准UIButton无法实现这一点 所以我创建了一个UIView其中包含一个UIImageView and a UILabe
  • 嵌入式 C++ 系统中的持续集成/单元测试

    通常使用哪些工具进行单元测试 尤其是嵌入式系统的持续集成 我特别认为你通常必须交叉编译和部署 而且你不能轻松地可视化目标平台 运行测试代码和框架也可能很困难 我可以用什么来缓解这些困难呢 我认为它应该是某种双重目标 构建服务器在更容易的目标
  • 重写 onSaveInstanceState

    我正在努力应对onSaveInstanceState类中的方法View https developer android com reference android view View html onSaveInstanceState 28
  • Apache Spark 的性能调优

    我正在开发一个项目 我必须调整 Spark 的性能 我发现了四个最重要的参数 它们将有助于调整 Spark 的性能 它们如下 火花记忆分数 Spark 内存 offHeap 大小 Spark Storage MemoryFraction S
  • Entity Framework Core 将不会映射到 BigInteger

    我需要使用BigInteger类来处理我的类的大整数 但是当尝试使用 Entity Framework Core 映射到数据库表时 我收到以下错误 该物业AllianceRank Reputation无法映射 因为 它是类型BigInteg
  • app-release.apk 是 zipaligned apk 吗?

    我使用的是Android Studio 1 0 2 当我在gradle任务中单击assembleRelease时 会生成两个文件 app release unaligned apk和app release apk 我知道 app relea
  • 使用 python 进行 SICP 的材料?

    我想用 Python 尝试 SICP 任何人都可以指出教授计算机程序的结构和解释的材料 视频 文章 python 目前正在学习 Abelson Sussman 和 Sussman 的 SICP 视频 我想这对你来说会很棒CS61A SICP
  • 尝试从应用内发送电子邮件但不起作用 - Swift (iOS)

    我尝试了来自不同网站的 2 个代码从我的 iOS 应用程序发送电子邮件 当我按下Send按钮它调用方法邮件撰写控制器并且总是返回日志 邮件已发送 作为result参数总是MFMailComposeResultSent value 即使我有
  • 管道中何时进行路由?

    ASP NET MVC 管道中何时进行路由 IIS 7 0 的 ASP NET 应用程序生命周期概述 http msdn microsoft com en us library bb470252 aspx 是否在第 2 步 执行 URL 映
  • TinyMCE初始化后修改工具栏的正确方法

    我正在使用 JavaScript 扩展云托管的 LMS 因此 我们可以在页面中添加javascript 但不能针对不同的组件修改供应商的javascript LMS 经常使用tinyMCE 目标是在每个tinyMCE编辑器的工具栏上添加一个
  • 通过向包装器传递 R 中的一组参数来生成 N 个 ggplot 图?

    我有一个输出数据框的函数 如下所示 df A tibble 100 x 7 test idx train user id test user id train idx D isSame D rank