使用 ggplot2 躲避哑铃图

2024-01-27

这个问题是基于这个先前的问题。 https://stackoverflow.com/q/58756264/4975218

考虑以下情节:

Domain = c("A", "B", "C", "D", "E", "F", "G", 
           "A", "B", "C", "D", "E", "F", "G", "A", "B", "C", "D", "E", "F", 
           "G", "A", "B", "C", "D", "E", "F", "G") 

Area = c("State", "State", 
         "State", "State", "State", "State", "State", "National", "National", 
         "National", "National", "National", "National", "National", "State", 
         "State", "State", "State", "State", "State", "State", "National", 
         "National", "National", "National", "National", "National", "National")

race = c("White", "White", "White", "White", "White", "White", 
         "White", "White", "White", "White", "White", "White", "White", 
         "White", "Black", "Black", "Black", "Black", "Black", "Black", 
         "Black", "Black", "Black", "Black", "Black", "Black", "Black", 
         "Black") 

pct_agreement = c(0.557610213756561, 0.735042750835419, 
                  0.567375898361206, 0.633762538433075, 0.64091557264328, 0.750356614589691, 
                  0.564539015293121, 0.651861846446991, 0.697574973106384, 0.653521358966827, 
                  0.713940441608429, 0.680985689163208, 0.751584351062775, 0.642535984516144, 
                  0.488484561443329, 0.581625580787659, 0.456939995288849, 0.580652594566345, 
                  0.630399644374847, 0.711643815040588, 0.347775995731354, 0.627996683120728, 
                  0.668737232685089, 0.610245823860168, 0.690373718738556, 0.705771028995514, 
                  0.738830924034119, 0.550933301448822)

df <- data.frame(Domain, Area, race, pct_agreement)

library(tidyverse)

ggplot(df) +
  geom_point(
    aes(
      x = Domain, y = pct_agreement, color = Area, shape = race,
      group = Area
    ), 
    position = position_dodge(width = 1)
  ) +
  coord_flip()

现在我们想通过连接同一域和面积的每一对点将其变成哑铃图。明显的代码如下:

df2 <- pivot_wider(df, names_from = race, values_from = pct_agreement)

ggplot(df) +
  geom_point(
    aes(
      x = Domain, y = pct_agreement, color = Area, shape = race,
      group = Area
    ), 
    position = position_dodge(width = 1)
  ) +
  geom_segment(
    data = df2,
    aes(
      x = Domain, xend = Domain, y = White, yend = Black,
      color = Area
    ),
    position = position_dodge(width = 1)
  ) +
  coord_flip()

Created on 2019-11-08 by the reprex package https://reprex.tidyverse.org (v0.3.0)

然而,显然这不起作用,因为position_dodge()并没有躲避xend审美的。我认为这是 ggplot2 中的一个错误,可能应该修复。然而,与此同时,制作这个情节最简单的方法是什么?我可以想到各种方法来做到这一点,但它们看起来都很麻烦。我错过了什么吗?


我发现嵌套分组通常会导致特定图出现困难。在这些情况下我发现interaction()函数非常有用,因为它允许简洁的代码并避免数据重新格式化。我们可以为线段定义一个新的分组。

重要的是,以下解决方案适用于位置躲避,因为它使用geom_line()代替geom_segment()。这避免了xend审美其中position_dodge()无法处理。

ggplot(df) +
  geom_point(
    aes(
      x = Domain, y = pct_agreement, color = Area,
      shape = race, group = Area
    ), 
    position = position_dodge(width = 0.5)
  ) +
  geom_line(
    aes(
      x = Domain, y = pct_agreement, color = Area, 
      group = interaction(Area, Domain)
    ),
    position = position_dodge(width = 0.5)
  ) +
  coord_flip()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ggplot2 躲避哑铃图 的相关文章

  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 如何在闪亮中使用带有reactiveValues的debounce

    我知道我可以像这样将 debounce 与reactive 结合使用 这就是我需要的行为 但我想改用reactiveValues ui lt fluidPage textInput inputId text label To see how
  • 在 R 中提取模式/分隔符之间的字符串

    我的变量名称格式如下 PP Sample 12 GT or PP Sample 17 GT 我正在尝试使用字符串拆分来 grep 出中间部分 即Sample 12 or Sample 17 但是 当我这样做时 IDtmp lt sapply
  • 按月/年间隔汇总每日数据

    我并不经常需要在 R 中处理日期 但我认为这相当简单 我有一列代表数据框中的日期 我只想创建一个新的数据框 使用日期按月 年总结第二列 最好的方法是什么 我想要第二个数据框 这样我就可以将它提供给绘图 您能提供的任何帮助将不胜感激 编辑 供
  • 重用 R 中内置的模型

    在 R 中构建模型时 如何保存模型规范以便可以在新数据上重用它 假设我根据历史数据建立逻辑回归 但直到下个月才会有新的观察结果 最好的方法是什么 我考虑过的事情 保存模型对象并在新会话中加载 我知道某些模型可以使用 PMML 导出 但还没有
  • Foreach循环无法找到对象

    我正在尝试将 foreach 与并行后端结合使用来加速计算 用于特征选择的 AUCRF 随机森林的交叉验证 如果这确实重要的话 在这样做的过程中 我需要获取向量的子集 向量的名称可以更改 但可以作为字符向量进行访问 我使用 eval par
  • 如何选择独特点

    我是一名 R 程序员新手 我有以下一系列观点 df lt data frame x c 1 2 3 4 y c 6 3 7 5 df lt df gt mutate k 1 df lt df gt full join df by k df
  • rpy2 在从 R 到 Python 的数据帧中处理 NA/缺失值时出现问题

    我在使用rpy2包进行转换时遇到问题dataframe将 R 中的内容保存到 Python 中 import os os environ R HOME Library Frameworks R framework Resources imp
  • 在 ggplot2 中,如何将堆叠直方图中的小值条形组合在一起?

    示例数据 tmp df lt data frame a rnorm 100 0 1 b rnorm 100 0 5 1 c rnorm 100 0 5 1 d rnorm 100 1 1 e rnorm 100 1 1 gt tidyr g
  • R闪亮的html小部件之间的交互

    我正在开发一个 R 闪亮应用程序 它使用多个 html 小部件 特别是网络D3 d3热图 and 和弦诊断 这些小部件单独工作正常 但是 在同一页面中使用它们会留下一个空格处他们应该在哪里 这是显示错误的可重现代码 在 UI 中注释绘图线
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • 在 mts 对象上使用 Apply 系列函数

    在 mts 对象上使用 apply 或 sapply 会在发送到函数时删除其时间序列属性 我应该如何在 mts 对象中的每个时间序列上应用相同的函数 带有 ts 输入和 ts 输出 并返回它 最好是 mts 我的意思是除了使用 for 循环
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 尽管提供了群落矩阵,纯素食 DBRDA 物种得分为空

    我使用纯素社区生态包在 R 中执行了 基于距离的冗余分析 dbRDA 我想在 dbRDA 结果的排序图中显示 鱼类 营养群体对样本之间差异 营养级鱼类组合的丰度数据 的相对贡献 IE 将箭头和营养级组名称叠加到排序图上 其中箭头线的长度表示
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • R - 根据另一个数据框查找每组的重叠日期

    我有一个数据框 其中包含多个雨量计的降雨测量值 如下例所示 gt rnfl ID date value 1 250 2000 03 01 5 37 2 250 2000 03 02 0 00 3 250 2000 03 03 2 94 4
  • Dplyr 多重滞后整齐评估?

    我试图在 dplyr 中使用尽可能少的代码来实现多个滞后 同时坚持整洁的评估 以下标准评估 SE 代码有效 if require dplyr install packages dplyr library dplyr a as tibble

随机推荐

  • 将图像添加到警报视图

    当用户按下添加按钮时 我会弹出一个警报视图 如何将图像添加到警报视图 我添加了一些从堆栈溢出中引用的代码 我的保存按钮被图像替换 并且图像看起来是蓝色的 警报视图代码 var alert UIAlertController title Sp
  • 直线运动卡顿

    我创建了简单的 与帧无关的 可变时间步长的线性运动Direct3D9 using ID3DXSprite 大多数用户无法注意到它 但在某些 包括我的 计算机上它经常发生 有时甚至会很卡顿 口吃发生于VSync启用和禁用 我发现同样的情况发生
  • UIToolbar 中工具栏项目之间的分隔符

    如何在 UIToolbar 中的按钮之间添加分隔符 示例图像显示在下面的链接中 我使用自定义视图按钮完成此操作 背景为 1 像素宽 UILabel label UILabel alloc initWithFrame CGRectMake 0
  • 通过 initWithRootViewController 以外的方法设置 UINavigationController 的 rootViewController

    我该如何设置rootViewController of UINavigationController通过除initWithRootViewController 我想用initWithNavigationBarClass toolbarCla
  • 如何使用javascript转义正则表达式特殊字符? [复制]

    这个问题在这里已经有答案了 我需要使用 java 脚本转义正则表达式特殊字符 我怎样才能实现这一点 任何帮助都值得赞赏 感谢您的快速回复 但是我需要转义正则表达式的所有特殊字符 我已经尝试过这段代码 但我无法达到结果 RegExp esca
  • 惯用缓冲 os.Stdout

    os Stdout Write is an 无缓冲的写 为了得到一个buffered写 可以使用以下内容 f bufio NewWriter os Stdout f Write b 问题 有没有更惯用的方法来获取buffered outpu
  • NSTextAttachment 图像未显示在 NSTextView 中(但显示在 UITextView 中)?

    我在获取时遇到问题NSTextAttachment工作图像NSTextView对于 OS X 应用程序 的形象NSTextAttachment只是根本不显示 然而 它似乎仍然设置正确 因为在复制内容的时候NSTextView并将其粘贴回例如
  • FindControl 返回空值

    我试图根据相关文本框控制按钮的状态 除了前缀之外 名称均相同 文本框和按钮位于页面上的表格中
  • 以编程方式将击键发送到 Groovy 或 bat 脚本中的窗口程序

    背景故事 我需要以编程方式查找两个文件之间的差异 我想使用 WinMerge 生成一个报告 工具 gt 生成报告 我可以解析该报告以获取两个文件之间的差异 我需要使用 Groovy 脚本或 bat 脚本来完成此操作 我希望 WinMerge
  • 在 Selenium Webdriver 中,如何获取元素后面的文本?

    我想获得恰好位于特定元素之后的文本 请看示例代码 div class h4 Sender h4 p span class screenHidden Name span submitter br span class screenHidden
  • nginx - php-fpm 集群

    我有三台 php fpm 服务器和一台 nginx 服务器 我想使用 nginx 服务器对 php fpm 进行负载平衡 php fpm 服务器1 192 168 10 31 php fpm 服务器2 192 168 10 32 php f
  • Meteor - 无法在 Windows 8.1 上运行 tasklist.exe

    我使用 Windows Installer 安装了最新版本的 Meteor v 1 1 0 2 我使用的是 Windows 8 1 一切似乎都已正确安装 因为我能够使用创建新的流星项目meteor create projectName 当我
  • 编译器不会为多态常量值选择类型类

    我是 Haskell 的新手 所以请提前原谅我 为什么以下 haskell 代码无法编译 编译器似乎无法看到表达式的类型 maxBound a is a其中有一个Enum提供了实例 而不是一些type variable a0 这是ambig
  • 如何获取嵌入式 MATLAB 函数的内容

    我的 Simulink 模型中有一些嵌入式 MATLAB 函数 有没有办法获取此块的内容 您在编辑器中看到的文本 我的第一个猜测是使用 find system 获取嵌入的 MATLAB 函数 然后使用 get param 获取内容 但我没有
  • 无法将mongodb容器连接到docker中的节点容器

    我用 2 个镜像制作了 3 个 docker 容器这个仓库 https github com Samar 080301 MernCrudApp1 使用 MongoDB 公共镜像 我使用以下命令打开了所有三个容器sudo docker com
  • 是否可以在 Vim 中以不同的方式显示分页符号?

    One of the nice things about Vim is that one can insert a page feed symbol Ctrl L in Insert mode which delegates the pri
  • n 个字符或至少 m 个字符的正则表达式

    这应该是一个非常简单的正则表达式问题 但我在任何地方都找不到任何答案 如何制作一个正则表达式 它只匹配 2 个字符 或至少 4 个字符 这是我当前的方法 忽略正则表达式本身 这不是重点 A Za z0 9 2 A Za z0 9 4 然而
  • 当用户多次加载视图时,在 uitableview 上保存附件复选标记

    因此 我实现了一个带有 tableview 的 UIViewController 基本上它作为我的 uicollectionview 的一组 过滤器 加载 现在 当我单击表格视图中的复选标记时 它会相应地 过滤 我的单元格 但现在当我再次重
  • “dict”对象没有属性“id”

    这是我的代码 我正在尝试将 xml 字符串转换为 python 列表以在 html 模板中显示 self task xml
  • 使用 ggplot2 躲避哑铃图

    这个问题是基于这个先前的问题 https stackoverflow com q 58756264 4975218 考虑以下情节 Domain c A B C D E F G A B C D E F G A B C D E F G A B