在 R 中使用 sapply 绘制并排图

2024-01-01

我有以下代码:

dat <- read.table(text="Topic  Project  C10     C14     C03     C11     C16     C08
                        T1     P1       0.24    0.00    0.00    0.04    0.04    0.00
                        T2     P1       0.00    0.30    0.00    0.00    0.00    0.00
                        T3     P1       0.04    0.04    0.00    0.24    0.00    0.00
                        T4     P1       0.00    0.00    0.00    0.04    0.33    0.04
                        T5     P1       0.00    0.09    0.21    0.00    0.00    0.00
                        T6     P1       0.00    0.09    0.00    0.00    0.00    0.34
                        T1     P2       0.20    0.00    0.00    0.04    0.00    0.04
                        T2     P2       0.00    0.22    0.04    0.00    0.00    0.00
                        T3     P2       0.04    0.00    0.00    0.24    0.00    0.00
                        T4     P2       0.00    0.00    0.04    0.00    0.33    0.00
                        T5     P2       0.04    0.00    0.21    0.00    0.00    0.00
                        T6     P2       0.00    0.04    0.00    0.00    0.00    0.34",
                        header=TRUE)
layout(matrix(c(1,2,5,3,4,5),nrow=2,byrow = TRUE))
#     [,1] [,2] [,3]
#[1,]    1    2    5
#[2,]    3    4    5
barcols <- c("red","blue","green","orange","black","yellow")
sapply(3:8, 
  function(x) {
    bp <- barplot(matrix(dat[,x],nrow=2,byrow=TRUE),ylim=c(0, 0.5),beside=TRUE,col=barcols)
    title(main=names(dat[x]))
    axis(1,at=colMeans(bp),c("T1","T2","T3","T4","T5","T6"),lwd=0,lwd.tick=1)
    abline(h=0)
  }
)
plot(NA,xlim=c(0,1),ylim=c(0,1),ann=FALSE,axes=FALSE)
legend(0,0.6,c("C10","C10","C03","C11","C16","C08"),fill=barcols,cex=1.5)

The above code should plot two barplots using the side-by-side feature as follow: enter image description here

不幸的是我只得到了一个图,这是不正确的,代码的灵感来自于此post https://stackoverflow.com/questions/21273691/how-to-create-2x2-bar-plot-with-side-by-side-pairwise-bar-in-r


对我来说,获得类似 ggplot 的分面的最简单方法是编写一个函数,该函数采用数据子集并将其用于split, eg,

dat <- read.table(text="Topic  Project  C10     C14     C03     C11     C16     C08
                        T1     P1       0.24    0.00    0.00    0.04    0.04    0.00
                        T2     P1       0.00    0.30    0.00    0.00    0.00    0.00
                        T3     P1       0.04    0.04    0.00    0.24    0.00    0.00
                        T4     P1       0.00    0.00    0.00    0.04    0.33    0.04
                        T5     P1       0.00    0.09    0.21    0.00    0.00    0.00
                        T6     P1       0.00    0.09    0.00    0.00    0.00    0.34
                        T1     P2       0.20    0.00    0.00    0.04    0.00    0.04
                        T2     P2       0.00    0.22    0.04    0.00    0.00    0.00
                        T3     P2       0.04    0.00    0.00    0.24    0.00    0.00
                        T4     P2       0.00    0.00    0.04    0.00    0.33    0.00
                        T5     P2       0.04    0.00    0.21    0.00    0.00    0.00
                        T6     P2       0.00    0.04    0.00    0.00    0.00    0.34",
                  header=TRUE)


layout(matrix(c(1,1,2,2,3,3),nrow=2))
barcols <- c("red","blue","green","orange","black","yellow")

sp <- split(dat, dat$Project)

sapply(seq_along(sp),
       function(x) {
         dd <- sp[[x]]
         m <- t(`rownames<-`(as.matrix(dd[, -(1:2)]), dd[, 1]))
         bp <- barplot(m,ylim=c(0, 0.5),beside=TRUE,col=barcols)
         title(main=names(sp[x]))
         abline(h=0)
       }
)
plot(NA,xlim=c(0,1),ylim=c(0,1),ann=FALSE,axes=FALSE)
legend(0,0.6,c("C10","C10","C03","C11","C16","C08"),fill=barcols,cex=1.5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中使用 sapply 绘制并排图 的相关文章

  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • 从 data.frame 中提取时用 NA 填充缺失的列

    我有一个函数 它将具有某些列的数据框作为输入 columns a b z 现在我有一个数据框DF只有很少的这些列DF columns f u z 如果列不在其中 如何创建一个包含所有值为 NA 的列的数据框DF这与DF在柱子上 f u z
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二
  • 在`rmarkdown`中,如何在句子中添加图标?

    In rmarkdown 如何在句子中添加图标 例如如下 如何添加markdown icon单词 Markdown 和 is 之间 有一个很好的 R 包 可以轻松下载 RMarkdown 文档并将图标添加到其中 icons https gi
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • Matplotlib loglog 的错误刻度/标签(双轴)

    我正在使用 matplotlib 创建对数图 如下图所示 默认刻度选择得很糟糕 充其量是这样 右边的 y 轴甚至根本没有 在线性等效中确实如此 而两个 x 轴都只有一个 有没有办法获得合理数量的带有标签的刻度 without为每个情节手动指
  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • 如何返回包含最大值标签的向量

    我有一个 4 列数组 我想获得一个向量 其中每行包含包含该行最大值的列的标签 我可以在循环中执行此操作 但我想使用矩阵函数来提高速度 我怎样才能在不编写自己的库函数的情况下做到这一点 有一个函数可以做到这一点 如果x是你的矩阵 尝试max
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • 使用 RDCOMClient 搜索 Outlook 收件箱

    我尝试使用 RDCOMClient 在 Outlook 收件箱中搜索电子邮件中的特定主题 然后获取附件 我在一封电子邮件上进行了这项工作 但由于主题包含日期元素 我需要搜索成为一个类似的子句 但不太清楚这适合我的下面的查询 outlook
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • 如何将同一行中以逗号分隔的值拆分到R中的不同行

    我有一些数据来自谷歌表格 https forms gle rGQQL3tvA1PrE4dD8我想拆分以逗号分隔的答案 and 复制参与者的 ID 数据如下 gt head data names Q2 Q3 Q4 1 PART 1 fruit
  • 如何在 R 中绘制一列与其余列的关系图

    我有一个数据集 其中 1 是时间 接下来的 14 个是幅度 我想在一张图表上散布所有大小与时间的关系 其中每个不同的列都是网格化的 分层在另一个之上 我想使用原始数据来制作这些图表 并单独制作它们 但只想执行此过程一次 数据集A 唯一的自变
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo
  • 不同 R/lme4 版本的单一拟合结果不匹配

    我试图将 R 版本 3 5 3 lme4 1 1 18 1 的随机效应估计与 R 版本 4 1 1 lme4 1 1 27 1 相匹配 然而 当存在奇异拟合时 这两个版本之间的随机效应存在微小差异 我对奇点警告很满意 但令人费解的是不同版本

随机推荐

  • Matplotlib:多线图

    我的数据框如下所示 Bin A B C Proba a Proba b Proba c gamma CPB 0 100 20841 23195 24546 34 503457 27 103303 22 859837 0 100 0 200
  • gwt-dev-mac.jar 丢失?

    我正在尝试在 Mac OS X 上使用 IntelliJ IDEA 进行 GWT 开发 并检查了同事在 Windows 上创建的 subversion 项目 项目文件附带了 GWT 的路径 C 这显然不适合我 当我在 模块设置 对话框中更改
  • 如何使用 pygame.KEYDOWN 在按住按键的情况下每次循环执行某些操作?

    我创建了 2 个函数 用于检查事件 def get pygame events pygame events pygame event get return pygame events and def get keys pressed sel
  • 最终在 Scala Try 中等效[重复]

    这个问题在这里已经有答案了 def doWork getLock Try useResource match case Success result gt releaseLock result case Failure e Exceptio
  • 使用scrollToPosition时不会调用RecyclerView onScrolled

    I have RecyclerView OnScrollListener像这样 findViewById R id button scroll to position setOnClickListener new View OnClickL
  • 在 R 中处理时间戳

    我有多个测量值列表 在每个列表中 时间戳都被格式化为字符串 2009 12 24 21 00 07 0 并且我知道列表中的每个测量值都以 5 秒分隔 我想将所有数据合并到 R 中的一个巨大的 data frame 中 之后我希望能够轻松访问
  • Python 字典列表投影、过滤器或子集?

    我正在尝试创建我认为的从较大字典空间到较小维度空间的 投影 所以 如果我有 mine name Al age 10 name Bert age 15 name Charles age 17 我试图找到一个仅返回的函数表达式 name Al
  • 从 iframe 中设置父窗口中的变量

    我有一个带有嵌入式 iframe 的父文档 在 iframe 内我有一个上传字段 一旦用户选择要上传的文件 我就会触发 jQuery 更改事件 在该事件中 我想将父窗口中的一个变量设置为 true 以便父窗口知道上传已开始 有谁知道如何做到
  • C# 使用丢弃 '_'

    我不太确定之间的区别 DataTable itemTable new DataTable itemTable CODE and new DataTable DataTable itemTable CODE 两者的工作原理完全相同 为什么我需
  • Javascript 调整 Firefox 弹出窗口的大小?

    我刚刚学习 Javascript 和 jQuery 但我是一名 HTML 人员 正在尝试迈出下一步 我正在尝试将内容放入表格中 该表格可以是任何大小 用于新闻网站 我检查大小 然后相应地调整弹出窗口的大小 虽然窗口不完全正确 但它可以工作
  • 不允许嵌套类的前向声明的原因?

    Example can t forward declare with class Foo Bar actual class class Foo public class Bar or enum Bar 我承认当前的 C 标准不允许这样做 但
  • Sequelize:使用构建来更新记录

    假设我有以下简单模型 var Foo sequelize define Foo bar Sequelize STRING 还有桌子Foos数据库中有一条记录 id bar 1 abc 为了更新此记录 我可以执行以下操作 Foo findBy
  • 我应该在哪里放置要在 AngularJS 应用程序的组件/控制器之间使用的代码?

    它应该与应用程序模块关联吗 它应该是一个组件还是只是一个控制器 基本上我想要实现的是所有页面的通用布局 我可以在其中放置或删除其他组件 我的应用程序的结构大致如下 bower components core login login comp
  • 字体文件中的什么属性使程序决定模拟粗体?

    我正在寻找字体文件中的属性 来自 WPF 的System Windows Media Fonts Typeface or GlyphTypeface 或直接访问 ttf otf 文件 这将允许我确定 Windows 中的 Write Wor
  • 获取有关 YouTube 视频的信息

    我希望获取 YouTube 视频的标题和持续时间并将其显示在我的应用程序中 我想动态地执行此操作 因为会有多个视频并且它们会发生变化 我寻找过提供此信息的 URL 但没有找到 有谁知道如何做到这一点 您需要使用 Youtube API 有关
  • QtCreator:如何设置调试参数? [复制]

    这个问题在这里已经有答案了 在 QtCreator 中 我无法找到如何设置在调试模式下运行时传递给可执行文件的参数 在 QtCreator 2 6 2 中应该是 转到 调试 下名为 项目 的选项卡 现在你必须选择适合你的 Qt 版本的工具包
  • 为什么 joblib.Parallel() 比非并行计算花费更多时间? Parallel() 不应该比非并行计算运行得更快吗?

    A joblib https joblib readthedocs io en latest parallel html模块提供了一个简单的帮助程序类来使用多处理编写并行 for 循环 此代码使用列表理解来完成这项工作 import tim
  • 涉及多个表的一对一关系

    Say 我有3张桌子 User其中包含有关用户的基本信息 SectionA其中包含有关用户的更多信息 SectionB其中还包含有关用户的更多信息 只能有一个SectionA and SectionB每个用户的数据 我的想法是创建一个像这样
  • 如何使 Volley NetworkImageView 离线工作

    I use Volley NetworkImageView从互联网下载图像并显示在我的listview 现在我想做Volley NetworkImageView当没有可用网络时显示保存的图像 Volley已经缓存了图像URL作为关键 因为当
  • 在 R 中使用 sapply 绘制并排图

    我有以下代码 dat lt read table text Topic Project C10 C14 C03 C11 C16 C08 T1 P1 0 24 0 00 0 00 0 04 0 04 0 00 T2 P1 0 00 0 30