GGPlot2 中带有子组的森林图

2023-11-29

作为 R 的新手(没有任何编码经验),我遇到以下问题。我正在尝试创建比值比的分组森林图(斑点图)。横轴应包含 OR。纵轴为变量。每个变量都包含 A 组和 B 组的 OR(包括下限和上限)。因此,垂直轴上显示的每个变量应该可见 2 条线。这website和这个website应该给你一种分组的想法。

我发现了一个相当不错的森林图格式迈克·巴恩科布我一直在努力适应我的需要。

我一直在通过 stackoverflow 争先恐后(例如here)。使用这种方法,我必须分割数据帧,我想其他方法也是可能的。

请在下面找到代码,其中仅包含一组虚拟数据框。

df <- data.frame(Outcome=c("Outcome A", "Outcome B", "Outcome C", "Outcome D"),
   OR=c(1.50, 2.60, 1.70, 1.30),
   Lower=c(1.00, 0.98, 0.60, 1.20),
   Upper=c(2.00, 3.01, 1.80, 2.20)
                      )
if (!require('ggplot2')) install.packages('ggplot2'); library('ggplot2')  

Outcome_order <- c('Outcome C', 'Outcome A', 'Outcome B', 'Outcome D')

p <- ggplot(df, aes(x=factor (Outcome, level=Outcome_order), y=OR, ymin=Lower, ymax=Upper)) + 
  geom_linerange(size=5, colour="#a6d8f0") +
  geom_hline(aes(x=0, yintercept=1), lty=2) +
  geom_point(size=3, shape=21, fill="#008fd5", colour="white", stroke = 0.5) +
  scale_x_discrete(name="(Post)operative outcomes") +
  scale_y_continuous(name="Odds ratio", limits = c(0.5, 5)) +
  coord_flip() +
  theme_minimal()
p

p + annotate("text", x=4.1, y=2.25, label="*")

有谁知道如何为每个变量添加第二组,最好在上面或旁边有一个图例?先感谢您!


诀窍是将它们组合成一个数据框,并在下面的示例中引入另一个变量“组”。当你绘制图时,你需要指定 postion=position_dodge() 以便它们并排绘制。看看下面是否是您想要的。我对颜色真的很不好,所以您可能需要为其他组指定颜色

library('ggplot2') 

Outcome_order <- c('Outcome C', 'Outcome A', 'Outcome B', 'Outcome D')

#this is the first dataset you have
df1 <- data.frame(Outcome=c("Outcome A", "Outcome B", "Outcome C", "Outcome D"),
   OR=c(1.50, 2.60, 1.70, 1.30),
   Lower=c(1.00, 0.98, 0.60, 1.20),
   Upper=c(2.00, 3.01, 1.80, 2.20))
# add a group column
df1$group <- "X"
# create a second dataset, similar format to first
df2 <- df1
# different group
df2$group <- "Y"
# and we adjust the values a bit, so it will look different in the plot
df2[,c("OR","Lower","Upper")] <- df2[,c("OR","Lower","Upper")] +0.5

# combine the two datasets                      
df = rbind(df1,df2)
# you can do the factoring here
df$Outcome = factor (df$Outcome, level=Outcome_order)

#define colours for dots and bars
dotCOLS = c("#a6d8f0","#f9b282")
barCOLS = c("#008fd5","#de6b35")


p <- ggplot(df, aes(x=Outcome, y=OR, ymin=Lower, ymax=Upper,col=group,fill=group)) + 
#specify position here
  geom_linerange(size=5,position=position_dodge(width = 0.5)) +
  geom_hline(yintercept=1, lty=2) +
#specify position here too
  geom_point(size=3, shape=21, colour="white", stroke = 0.5,position=position_dodge(width = 0.5)) +
  scale_fill_manual(values=barCOLS)+
  scale_color_manual(values=dotCOLS)+
  scale_x_discrete(name="(Post)operative outcomes") +
  scale_y_continuous(name="Odds ratio", limits = c(0.5, 5)) +
  coord_flip() +
  theme_minimal()

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GGPlot2 中带有子组的森林图 的相关文章

  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 汇总表中各列的字符值比例

    在这种数据框中 df lt data frame w1 c A A B C A w2 c C A A C C w3 c C A B C B 我需要计算所有列中字符值的列内比例 有趣的是 以下代码适用于大型实际数据集 但对上述玩具数据会引发错
  • 如何在 R 中绘制一列与其余列的关系图

    我有一个数据集 其中 1 是时间 接下来的 14 个是幅度 我想在一张图表上散布所有大小与时间的关系 其中每个不同的列都是网格化的 分层在另一个之上 我想使用原始数据来制作这些图表 并单独制作它们 但只想执行此过程一次 数据集A 唯一的自变
  • 更快的 %in% 运算符

    The 快速匹配 https cran r project org web packages fastmatch index html包实现了更快的版本match对于重复匹配 例如在循环中 set seed 1 library fastma
  • 如何定义“f_n-chi-square”函数并使用“uniroot”求置信区间?

    I want to get a 95 confidence interval for the following question 我已经写了函数f n在我的 R 代码中 我首先使用 Normal 随机采样 100 个样本 然后定义函数h
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple
  • 如何使用 xpath 检查某个对象在网页中是否可见?

    我正在 R 中使用 RSelenium 包来进行网络抓取 有时加载网页后 需要检查某个对象在网页中是否可见 例如 library RSelenium open a browser RSelenium startServer remDr lt
  • 使用大矩阵操作

    我必须使用 big matrix 对象 并且无法计算某些函数 让我们考虑以下大矩阵 create big matrix object x lt as big matrix matrix sample 1 10 20 replace TRUE
  • 删除字符串末尾的句点和数字

    如何删除尾随句点 后面紧跟一个数字 长度为一位或两位数字 例子 z lt c awe p 56 red 45 ted 5 you 88 tom 我只想删除 45和 5 你只需要一个简单的正则表达式 z new gsub 0 9 z 一些评论
  • 获取函数的命名空间

    我正在开发一个包 我希望在其中向对象添加编辑历史记录 该包允许其他包注册用于编辑对象的函数 我正在寻找一种方法来记录注册用于编辑的函数的包的版本 问题是 给定一个函数 如何从导出的位置获取包 我的想法是调查它的搜索路径 但是search 仅
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • 无法更新/编辑从 R 中的包(`gratia`)导出的 ggplot2 对象

    我希望我在这里遗漏了一些令人痛苦的明显的东西 我希望更新 例如 修复标题 实验室等 由 生成的 ggplot 对象gratia draw 不太确定为什么我无法更新该对象 有一个简单的解决方案吗 devtools install github
  • R、Rcpp 与 Armadillo 中矩阵 rowSums() 与 colSums() 的效率

    背景 来自 R 编程 我正在扩展到 C C 形式的编译代码Rcpp 作为循环交换 以及一般的 C C 效果的实践练习 我实现了 R 的等效项rowSums and colSums 矩阵的函数Rcpp 我知道它们以 Rcpp 糖的形式存在 并
  • 如何对数字进行四舍五入并使其显示零?

    R 中将数字四舍五入到小数点后 2 位的常用代码是 gt a 14 1234 gt round a digits 2 gt a gt 14 12 但是 如果该数字的前两位小数位为零 则 R 会在显示中抑制零 gt a 14 0034 gt
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • 正态分布平均值的贝叶斯推理玩具 R 代码 [降雪量数据]

    我有一些降雪观测 x lt c 98 044 107 696 146 050 102 870 131 318 170 434 84 836 154 686 162 814 101 854 103 378 16 256 我被告知它遵循正态分布
  • 访问或解析 R 中的 summary() 中的元素

    我运行以下 R 命令来进行 Dunnett 测试并获取摘要 如何访问下面线性假设的每一行 这是摘要输出的一部分 基本上我不知道摘要的结构 我尝试使用名称 但它似乎不起作用 因为我没有看到任何命名属性来提供这一点 library multco
  • 在R中循环子文件夹

    我正在 R 环境中包含多个子文件夹的文件夹中工作 我想要循环遍历多个子文件夹 然后在每个子文件夹中调用 R 脚本来执行 我想出了下面的代码 但我的代码似乎添加了 到子文件夹列表 我收到错误 文件中的错误 文件名 r 编码 编码 无效的 描述
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我

随机推荐

  • 如何在 Eclipse 中的可执行 .jar 文件中包含资源文件夹?

    我需要创建一个应用程序 使用各种参数 例如高度 体积或底面积 对各种类型的多边形进行排序 具有多边形参数 排序类型 排序方法的文件名参数将通过命令行传递 该文件位于项目中 src 文件夹外部的资源文件夹中 我已经实现了所有程序 当我通过 e
  • 无法动态创建和附加 div 和 span

    我正在编写一个 HTML 代码 其中有一个 div 说y这是在我的 HTML 正文中 有一个按钮 当用户单击此按钮时 我想要执行以下操作 创建另一个 div 类为smallBar 里面这个div 我想创建3个跨度 添加此 总计smallBa
  • 使用所有时区和有/无 DST 的日期进行单元测试

    如何使此单元测试在所有时区中通过 无论 DST 是否处于活动状态 import static org junit Assert import java text SimpleDateFormat import java util Date
  • 包含新的测试目录 Maven Surefire 插件

    现有结构 src test java gt 所有 java 单元测试 Maven Surefire 插件可以轻松获取此信息 现在 除了这些java单元测试用例之外 我还想包括一些groovy测试用例 并且我想将它们放在src test gr
  • Android - 从光标获取专辑艺术家

    我目前正在创建一个音乐播放器 并且正在使用光标检索设备上的音乐 mCursor getContentResolver query MediaStore Audio Media EXTERNAL CONTENT URI requestedCo
  • python-docx - 显示为普通段落的列表

    我正在尝试将数字和项目符号列表插入到现有的 Word 文档中 但是它们显示为普通段落 Open up existing document document Document existing document docx Add style
  • selenium 无法对网页元素进行屏幕截图

    我可以使用 Firefox get screenshot as file 2 png 对整个页面进行屏幕截图 但是当我使用passage screenshot 1 png 对网页元素进行屏幕截图时 它总是会引发此异常 selenium co
  • 嵌入字体和 11 月字体有什么区别?

    在书中我看到了例子 BaseFont bf BaseFont createFont KozMinPro Regular Identity V BaseFont NOT EMBEDDED Font font new Font bf 20 Ve
  • 将 Blazor .NET 6 WASM 部署到 GitHub 页面

    我正在尝试让 Blazor WASM 在 GitHub 页面中工作 我关注了这个视频 https www youtube com watch v nNxII6jvPvQ 我将它部署到这里 扩展 GH 页面 来源在这里 GH 页面源 我收到此
  • 如何用管道描述推荐基线

    我试图找到复合基线中关联的所有组件基线 我可以使用以下方式实现它 cleartool desc fmt rec bls CXp stream My Integration My PVOB I would save the receommen
  • 异步始终等待激活

    我想弄清楚是什么async await关键字是全部 但输出并不是我所期望的 控制台应用程序如下 class Program static void Main string args Console WriteLine Foo called
  • $and 查询没有返回结果

    好吧 这个简直要了我的命 也许已经晚了 我忘记了一些事情 但这应该有效 出于测试目的 我收集了大约 6000 个文档 有一个属性叫Priority在每个实例中其值为 2 以下两个查询分别返回all6000 个文档 Priority gt 1
  • MKMapKit 可拖动注释和绘制多边形

    我目前正在尝试允许用户向地图添加图钉 然后绘制连接这些图钉的多边形 但是我想扩展它以允许用户能够拖动引脚并且多边形将相应地更新 MKMapView 根据坐标数组中的排列从坐标数组中绘制多边形 如果我没有记错的话 我现在面临的问题是在用户重新
  • 无法启动 Rails Server - 找不到 JavaScript 运行时

    pallav pallav System Product Name Workspace blog rails server home pallav rvm gems ruby 2 0 0 p353 gems execjs 2 0 2 lib
  • pandas:相当于 SQL 的 datediff() 的函数?

    Python 的 pandas 中是否有与 SQL 的 datediff 函数等效的函数 这个问题的答案 在 DataFrame pandas 中添加包含日期之间天数的列解释如何计算天数差异 例如 gt gt gt pd to dateti
  • 如果加载时间太长,如何让 selenium 重新加载所需的 url

    如果加载过程花费太长时间 我希望 selenium 强制浏览器重新加载正在加载的页面 从 StackOverflow 我知道这段代码 new WebDriverWait driver 30 until ExpectedCondition
  • tkinter 和 asyncio,窗口拖动/调整大小阻止事件循环,单线程

    Tkinter 和 asyncio 一起工作时存在一些问题 它们都是想要无限期阻塞的事件循环 如果您尝试在同一线程上运行它们 其中一个将阻止另一个执行 这意味着 如果您想运行 tk 事件循环 Tk mainloop 则所有 asyncio
  • 如何从 Visual Studio 运行 cpack?

    我正在将一些包从 Linux 移植到 Windows 我发现 Visual Studio 与 cmake 具有相当好的集成 我可以使用 cmake 配置和构建项目 但是我不知道如何运行 cpack 来创建安装包 这个问题 如何在 Windo
  • 使用 jquery.event.drag 拖动多个元素

    我想用 jQuery 插件拖动多个元素jquery event drag 这里有一个原始演示的小提琴 这是链接原始演示 在演示中 用户单击他想要选择的方块并拖动它们 但我想做一些最简单的事情 只需单击方块 1 并移动所有方块 我尝试了不同的
  • GGPlot2 中带有子组的森林图

    作为 R 的新手 没有任何编码经验 我遇到以下问题 我正在尝试创建比值比的分组森林图 斑点图 横轴应包含 OR 纵轴为变量 每个变量都包含 A 组和 B 组的 OR 包括下限和上限 因此 垂直轴上显示的每个变量应该可见 2 条线 这webs