如何让 geom_errorbar 在 ggplot2 的条形图上正确“闪避”?

2023-12-09

我正在尝试制作带有误差线的分组条形图。但是,我无法使误差条看起来正确(即比主条更薄)并且位置正确(位于条的中心)。这position选项和position_dodge()似乎工作不正常,我不明白为什么——根据其他类似问题的例子,这应该有效。

我正在 R 版本 3.4.2 中运行 ggplot2 版本 3.0.0。

一个最小的工作示例:

d<-data.frame(bin = factor(c(1,2,3,1,2,3)),type = factor(c(1,1,1,2,2,2)), beta = c(10,20,30,40,50,60), se = c(2,2,2,2,2,2))
ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
    geom_bar(aes(fill = type), position = position_dodge2(), stat="identity")  +
    geom_errorbar(position=position_dodge2(.9))

Produces:Right Position, Too Wide Right position, but too wide. Using position_dodge() instead of position_dodge2() doesn't even get the position right:

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
  geom_bar(aes(fill = type), position = position_dodge(), stat="identity")  +
  geom_errorbar(position=position_dodge(.9)) 

Even wider, and wrong position Adding the width parameter to geom_errorbar breaks the version with position_dodge2() and doesn't help the one with position_dodge():

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
  geom_bar(aes(fill = type), position = position_dodge2(), stat="identity")  +
  geom_errorbar(position=position_dodge2(.9), width= .2)

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
  geom_bar(aes(fill = type), position = position_dodge(), stat="identity")  +
  geom_errorbar(position=position_dodge(.9), width = .2) 

Good width, wrong position Good width, wrong position still

这里发生了什么?我该如何解决?


如果你搬家fill进入全球aes() then position_dodge()将按预期工作。或者,您可以通过添加分组变量group to geom_errorbar().

ggplot(d, aes(x = bin, y = beta, 
              ymin = beta - 1.96*se, ymax = beta+1.96*se, fill = type)) + 
    geom_bar(position = position_dodge(), stat="identity")  +
    geom_errorbar(position=position_dodge(.9), width = .2)

问题与position_dodge2()似乎是讨论的内容这个 GitHub 问题,可以通过以下方式解决padding争论。请注意,不再有width论证中geom_errorbar()用这种方法。

ggplot(d, aes(x = bin, y = beta, 
              ymin = beta - 1.96*se, ymax = beta+1.96*se, fill = type)) + 
    geom_bar(position = position_dodge2(), stat="identity")  +
    geom_errorbar(position = position_dodge2(.9, padding = .6))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 geom_errorbar 在 ggplot2 的条形图上正确“闪避”? 的相关文章

  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • 如何从 R 读取 PDF 元数据

    我们很好奇 有没有一种方法可以从 R 读取 PDF 元数据 例如下面显示的信息 通过搜索我对此无能为力 r pdf metadata在当前的问题库中 非常欢迎任何指点 我想不出纯 R 的方法来执行此操作 但您可能可以安装您最喜欢的 PDF
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输

随机推荐

  • 如何快速编写这段代码?

    我用 Objective c 编写了这段代码 NSRect textRect NSMakeRect 42 35 117 55 NSString textContent Hello World NSMutableParagraphStyle
  • AVAudioPlayer 在模拟器上工作但在真实设备上不工作

    当我播放录制的音频时 出现此错误 致命错误 在解包可选值时意外发现 nil 在这行代码上 SoundPlayer try AVAudioPlayer contentsOfURL getFileURL 但它在除真实设备之外的模拟器上运行良好
  • Rails 表单提交与远程 => true -- js 文件渲染但不执行

    有一个类似的问题here and here但都没有我正在寻找的答案 我也做了很多搜索 rails format js render 但无法解决这个问题 在 Rails 4 中 我有一个经过验证的表单 如下所示 don t want to c
  • 模拟 ScheduledExecutorService 与“不要模拟您不拥有的类型”哲学

    Mocking 预定执行服务确实会让测试我的课程变得更容易 但根据模拟推荐这似乎是一个坏主意 因为模拟类的逻辑可能会以错误的方式使用 但单元测试仍然会报告成功 似乎为它编写一个包装器是 干净 的方式 但我有一种感觉 这只会导致接口的完全重复
  • Python3 在同一行上打印 - 7 段设备格式的数字

    我是 Python 新手 很难将输出打印在一行上 这与在线 Python 课程 Learning Python Essentials Lab 5 1 10 6 和打印到 7 段设备有关 如果您不熟悉 7 段设备 请参阅维基百科 我没有使用任
  • 是否可以将搜索过滤器/框添加到树视图组件中?

    我正在制作扩展 我很好奇是否可以向树组件添加搜索过滤器 框 我目前正在用 javascript 编码扩展 但我不确定它是否可能 这就是我想在树视图顶部添加的内容 它将在 v1 70 中内置到 vscode 中 它在我为垂直选项卡组编写的树视
  • 使用 Linq 表达式和反射获取属性值的通用方法

    亲爱的反思之神 我想要一个通用的GetValue
  • 正则表达式 match() 无法捕获 python 中的简单模式

    我正在尝试在 Python 中使用一些简单的正则表达式函数 我正在使用正则表达式来捕获阿拉伯字母表中的模式 但在最简单的情况下 当人们在模式的开头添加几个字母时 无论是否有连字 它似乎都不起作用 gt gt gt p re compile
  • 等待几秒钟而不阻止 UI 执行

    我想在两条指令之间等待几秒钟 但不阻止执行 例如 Thread Sleep 2000 这不好 因为它会阻塞执行 我的想法是 我调用一个方法 然后等待 X 秒 例如 20 秒 监听即将到来的事件 在 20 秒结束时 我应该根据 20 秒内发生
  • C#.NET 使用 Windows 服务获取计算机的用户名

    我很难获取使用 Windows 服务登录计算机的人的用户名 当同时使用 System Environment UserName 或 WindowsIdentity GetCurrent UserName 时 我得到 NTAUTHORITY
  • 了解Android 6权限方法

    我试图从图库中获取图像并将其设置为图像视图 但在 Android 6 中存在一些权限问题 以下是请求许可的方法 我应该要求读取外部存储还是写入外部存储 这是我到目前为止所做的 private static final int READ CO
  • 如何使用 tastypie 登录 django

    我试图在自定义身份验证中覆盖 is authenticated 我有一些简单的事情 首先 是这样的 class MyAuthentication BasicAuthentication def init self args kwargs s
  • md-icons 如何在浏览器上呈现

    我在我的项目中使用了material2和Material图标 我想知道这些命名图标是如何在浏览器中呈现的 我用过
  • 电子重建内发生未处理的错误

    我正在尝试使用 Sqlite3 重建我的 ElectronJS 应用程序 我已经安装了 Python VS 开发工具 但它仍然给我错误 我的 Package json name hello version 1 0 0 description
  • django中如何区分首次注册用户和常规登录用户

    我所有的工作都使用 django allauthsignin signup and logout功能和工作正常 现在我有一个功能 1 当用户第一次注册并登录时 我需要将他重定向到成功页面 验证页面 success 2 当已经注册的用户登录时
  • 使用 boost::spirit 以任意顺序解析命名参数

    我正在为一种输入文件编写一个解析器 输入文件看起来像 CalculationBlock CalculationTitle Test Parser Input System MatchingRadius 25 0 StepSize 0 01
  • 如何使用 solc 0.5 编译 Solidity

    编译 js const path require path const solc require solc const fs require fs extra const buildPath path resolve dirname bui
  • 当我打印新值时,我得到以前的浮点值

    我正在得到输出0 23从第二个printf 但类型转换给出了所需的输出 如果我不使用类型转换 则会打印先前的值 编译器版本是GCC 6 3 include
  • 如何分析 .net 垃圾收集器?

    我想知道如何分析垃圾收集器的性能并监控三代 我想知道是否有可能在任何时间点知道当前对象生活在什么地方gen0 gen1 gen2 你可以得到PerfMon 中有关 GC 性能的有用信息 但没有你想要的那么细化 NET内存性能有很多 计数器
  • 如何让 geom_errorbar 在 ggplot2 的条形图上正确“闪避”?

    我正在尝试制作带有误差线的分组条形图 但是 我无法使误差条看起来正确 即比主条更薄 并且位置正确 位于条的中心 这position选项和position dodge 似乎工作不正常 我不明白为什么 根据其他类似问题的例子 这应该有效 我正在