控制 genoPlotRplot_gene_map 中的边距

2024-03-03

我正在制作一个plot_gene_map数字由genoPlotR R包,它给出了一个水平系统发育树,其中与每个叶子对齐的是一个基因组片段。

这是一个简单的例子,说明了我的用法和问题:

The plot_gene_map函数需要一个ade4的包phylog代表系统发育树的对象:

tree <- ade4::newick2phylog("(((A:0.08,B:0.075):0.028,(C:0.06,D:0.06):0.05):0.0055,E:0.1);")

的列表genoPlotR's dna_seg对象(本质上是data.frame具有特定列的 s),其中列表元素的名称必须与tree:

dna.segs.list <- list(A=genoPlotR::as.dna_seg(data.frame(name=paste0("VERY.LONG.NAME.A.",1:10),start=seq(1,91,10),end=seq(5,95,10),strand=1,col="black",ly=1,lwd=1,pch=1,cex=1,gene_type="blocks",fill="red")),
                      B=genoPlotR::as.dna_seg(data.frame(name=paste0("VERY.LONG.NAME.B.",1:10),start=seq(1,91,10),end=seq(5,95,10),strand=1,col="black",ly=1,lwd=1,pch=1,cex=1,gene_type="blocks",fill="blue")),
                      C=genoPlotR::as.dna_seg(data.frame(name=paste0("VERY.LONG.NAME.C.",1:10),start=seq(1,91,10),end=seq(5,95,10),strand=1,col="black",ly=1,lwd=1,pch=1,cex=1,gene_type="blocks",fill="green")),
                      D=genoPlotR::as.dna_seg(data.frame(name=paste0("VERY.LONG.NAME.D.",1:10),start=seq(1,91,10),end=seq(5,95,10),strand=1,col="black",ly=1,lwd=1,pch=1,cex=1,gene_type="blocks",fill="yellow")),
                      E=genoPlotR::as.dna_seg(data.frame(name=paste0("VERY.LONG.NAME.E.",1:10),start=seq(1,91,10),end=seq(5,95,10),strand=1,col="black",ly=1,lwd=1,pch=1,cex=1,gene_type="blocks",fill="orange")))

以及一份清单genoPlotR's annotation提供坐标信息的对象,也根据tree leaves:

annotation.list <- lapply(1:5,function(s){
  mids <- genoPlotR::middle(dna.segs.list[[s]])
  return(genoPlotR::annotation(x1=mids,x2=NA,text=dna.segs.list[[s]]$name,rot=30,col="black"))
})
names(annotation.list) <- names(dna.segs.list)

对该函数的调用是:

genoPlotR::plot_gene_map(dna_segs=dna.segs.list,tree=tree,tree_width=2,annotations=annotation.list,annotation_height=1.3,annotation_cex=0.9,scale=F,dna_seg_scale=F)

这使:

正如您所看到的,顶部和右侧的框(基因)名称被切断。

我尝试玩pdf's width and height,将图形保存到文件时,并且边距通过par's mar,但它们没有任何效果。

  1. 知道如何在不切断名称的情况下显示该图吗?
  2. 现在genoPlotR's plot_gene_map没有legend选项已实施。知道如何添加图例,假设它在这些标签旁边的方块中显示这些颜色:

    data.frame(标签 = c("A","B","C","D","E"), 颜色 = c("红","蓝","绿","黄","橙子”))


很高兴您喜欢 genoPlotR。

对于您的问题,没有真正优雅的解决方案,但您可以尝试以下一些操作: - 增加annotation_height并减少annotation_cex - 增加注释功能中的旋转(“rot”) - 使用 xlims 人为地增加 dna_seg 的长度(但这是一个糟糕的黑客)

对于其余部分(包括图例),您必须使用网格及其视口。

前 3 个解决方案的混合:

annotation.list <- lapply(1:5,function(s){
  mids <- genoPlotR::middle(dna.segs.list[[s]])
  return(genoPlotR::annotation(x1=mids, x2=NA, text=dna.segs.list[[s]]$name,rot=75,col="black"))
})
names(annotation.list) <- names(dna.segs.list)
genoPlotR::plot_gene_map(dna_segs=dna.segs.list,tree=tree,tree_width=2,annotations=annotation.list,annotation_height=5,annotation_cex=0.4,scale=F,dna_seg_scale=F, xlims=rep(list(c(0,110)),5))

为了获得更好的网格解决方案:(注意调用plot_gene_map中的“plot_new=FALSE”)

# changing rot to 30
annotation.list <- lapply(1:5,function(s){
 mids <- genoPlotR::middle(dna.segs.list[[s]])
return(genoPlotR::annotation(x1=mids,x2=NA,text=dna.segs.list[[s]]$name,rot=30,col="black"))
})
names(annotation.list) <- names(dna.segs.list)


# main viewport: two columns, relative widths 1 and 0.3
pushViewport(viewport(layout=grid.layout(1,2, widths=unit(c(1, 0.3), rep("null", 2))), name="overall_vp"))
# viewport with gene_map
pushViewport(viewport(layout.pos.col=1, name="geneMap"))
genoPlotR::plot_gene_map(dna_segs=dna.segs.list,tree=tree,tree_width=2,annotations=annotation.list,annotation_height=3,annotation_cex=0.5,scale=F,dna_seg_scale=F, plot_new=FALSE)
upViewport()
# another viewport for the margin/legend
pushViewport(viewport(layout.pos.col=2, name="legend"))
plotLegend(…)
upViewport()

希望有帮助!

Lionel

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

控制 genoPlotRplot_gene_map 中的边距 的相关文章

  • 在 ggplot2 上绘制世界地图

    我一直在尝试在 ggplot2 上绘制世界地图 我跟踪了电子邮件的线索 带 l 的 ggplot 地图 https stackoverflow com questions 9558040 ggplot map with l但我确实遇到了同样
  • 如何使用itext7缩放固定矩形内的文本?

    我正在尝试使用 c 中的 itext7 制作一个 pdf 文档 该文档应该具有包含不同文本的固定矩形 这些文本应该在 不可见 矩形的边界内缩放 我试图寻找是否有自动缩放功能 但到目前为止只发现表单域的自动缩放功能 由于 pdf 将用于绘制文
  • 如何强制在较新版本的 R 上安装较旧的软件包?

    我无法安装proj4string进入我当前版本的 R 2 15 1 Warning message package proj4string is not available for R version 2 15 1 我认为这是因为 2 15
  • 在r中拆分数据并将所有拆分文件保存在csv中

    我有一个名为 data 的数据集 Model Garage City Honda C Chicago Maruti B Boston Porsche A New York Honda B Chicago Honda C New York 它
  • 计算不包括当前值的平均值

    我有下表 a b avg 1 1 7 3 2 1 0 3 3 1 2 3 4 2 1 2 5 2 3 2 其中 a 和 b 是数据 avg 计算按 a 分组的 b 的平均值 现在我想计算按 a 分组的 b 的平均值 avg2 不包括当前值
  • 将其他数据集的点添加到ggplot2

    关于这个主题已经有很多问题 但我找不到能回答我的具体问题的问题 我有一个barplot see testplot1 and testplot3如下 绘制数据集 bardata如下 并希望从另一个数据集向其添加点 pointdata 请参阅简
  • R 中 nlme 包中的 gls 函数出错

    我不断收到这样的错误 Error in coef lt corARMA tmp value c 18 3113452983211 1 56626248550284 Coefficient matrix not invertible 或者像这
  • 从每小时中提取/子集分钟值

    我的数据框包含以下格式的日期值YYYY MM DD HH MM SS跨越 125000 多行 按分钟细分 每行代表一分钟 1 2018 01 01 00 04 00 2 2018 01 01 00 05 00 3 2018 01 01 00
  • 无效的命令名称“tk_chooseDirectory”错误

    我使用 bioconductor 进行 WES 管道 并使用 tk choose dir 选择用户存储输入文件的目录 并将其存储以供进一步使用 这里是命令行 library tcltk dataDir lt dirname tk choos
  • 通过 PDFBox 访问图像的“替代文本”

    有没有某种方法可以使用提取特定图像的 替代文本 PDFBox http pdfbox apache org 我有一个 PDF 文件 如所述http www w3 org WAI GL 2011 WD WCAG20 TECHS 2011062
  • dplyr:带引号变量名的 mutate 的标准评估

    我将如何使用mutate 我的假设是我正在寻找标准评价就我而言 因此mutate 但我对此并不完全有信心 当使用接受变量名列表的函数时 如下所示 createSum function data variableNames data gt m
  • 在 ipython 中使用 igraph 绘制顶点标签时出现问题

    我通常在 IPython 笔记本中工作 我使用以下命令在 Windows 上打开它 ipython qtconsole matplotlib inline 我目前正在使用 IPython QtConsole 3 0 0 Python 2 7
  • 在 R 中安全地计算算术表达式?

    Edit 好吧 由于似乎有很多混乱 我将稍微简化一下问题 您可以尝试回答下面的原始问题 或者您可以解决此版本并忽略该行下面的所有内容 我的目标是采用任意表达式并在极其受限的环境中对其进行评估 该环境将仅包含具有以下类型值的变量 数值向量 接
  • 如何使用 ggplot2 对曲线下的区域进行着色

    我一直在尝试使用 ggplot2 生成类似于此 R 图形的绘图 xv lt seq 0 4 0 01 yv lt dnorm xv 2 0 5 plot xv yv type l polygon c xv xv lt 1 5 1 5 c y
  • 从受密码保护的站点读取信息

    我一直在 R 教程中使用 readLines 从网站上抓取信息 我现在希望从我自己的网站提取数据 特别是 awstats 数据 但是该域受密码保护 有没有一种方法可以通过用户名和密码传递我需要的特定 awstats 数据的 url url
  • 将 PDF 转换为 CMYK 但忽略黑色?

    我使用以下命令将 RGB PDF 转换为 CMYK usr local bin gs dSAFER dBATCH dNOPAUSE dNOCACHE sDEVICE pdfwrite sColorConversionStrategy CMY
  • R中使用余弦距离的层次聚类

    我想通过使用余弦相似度与 R 编程语言对文档语料库进行层次聚类 但出现以下错误 if is na n n gt 65536L stop 大小不能为 NA 或 超过 65536 需要 TRUE FALSE 时缺少值 我应该怎么办 为了重现它
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • R 中的点图每行有多个值

    我有以下 R 输入文件 car 1 car 2 car 3 car2 1 car2 2 car2 3 然后 我使用以下命令来绘制图表 autos data 点图 autos data V2 autos data V1 但这将每个汽车和 ca

随机推荐

  • EF Code First 预加载和 OrderBy 问题

    我有两个名为 类别 和 产品 的实体 具有 1 n 关系 我想要一个带有子项的类别 子项是有序的 这是我的链接 db Categories Where c gt c CategoryID catID Include c gt c Produ
  • 类方法如何访问同一类的另一个实例的私有成员?

    我无法理解jdk1 7中的代码 value是私有的 那么为什么代码可以使用它 例如anotherString value public final class String implements java io Serializable C
  • 不使用egit将git项目导入到工作区

    几周前我问了一个与 Egit 有关的问题 有人建议我阅读我一直在参考的 pro git 我宁愿从命令行使用 git 并等待 6 月份的 Eclipse Indigo 版本中的 egit 稳定版本 因为有很多错误 它往往会让我的 ide 停滞
  • 如何正确配置入口缓存以使其正常工作?

    我正在尝试为特定主机配置缓存 但收到 404 另外 我的配置似乎未包含在最终的 nginx conf 中 该文件不包含它 我的 ingress yaml apiVersion extensions v1beta1 kind Ingress
  • RecyclerView 中的 setLayoutManager NullPointEreException

    我试图在 RecyclerView 中接收包含数组的列表并收到错误 java lang NullPointerException Attempt to invoke virtual method void android support v
  • GOF 单例模式有任何可行的替代方案吗?

    面对现实吧 单例模式是极具争议性 https stackoverflow com questions 11831 singletons good design or a crutch 11839大量程序员的主题both栅栏的两侧 有些人觉得
  • Java - 创建一个具有指定长度并填充特定字符的新 String 实例。最好的解决方案? [复制]

    这个问题在这里已经有答案了 我确实检查了其他问题 这个问题的重点是以最有效的方式解决这个特定问题 有时您想要创建一个具有指定长度的新字符串 并使用默认字符填充整个字符串 也就是说 如果你能做到的话那就太酷了new String 10 并从那
  • Ftp 仅在 .NET 4.0 中抛出 WebException

    我有以下 C 代码 当针对 NET Framework 3 5 或 2 0 编译时 它运行得很好 我没有针对 3 0 进行测试 但它很可能也能工作 问题是 当针对 NET Framework 4 0 构建时它会失败 FtpWebReques
  • 负索引数组的实现

    我正在制作一个世界向各个方向无限延伸的游戏 这意味着您可以处于以下位置X 50 Y 50 or X 50 Y 50 但是 我真的无法用普通的 C 列表做到这一点 我想出的所有想法似乎都太复杂 效率低下 无法实现 实现无限网格的最简单方法是使
  • sql server 排序规则冲突

    当我发出 SQL 查询时 有时会收到以下错误消息 无法解决等于操作中 Latin1 General CI AS 和 SQL Latin1 General CP1 CI AS 之间的排序规则冲突 我经常解决这个问题只是使两个表排序规则相同 所
  • Windows 上 Ruby 中的 Unicode 文件名

    我有一段代码 如下所示 Dir new path each do entry puts entry end 当我列出的目录中有一个名为 世界 txt 的文件时 问题就出现了 在 Windows 7 机器上我得到输出 txt 通过谷歌搜索 在
  • R 错误:`n()` 只能在 dplyr 动词内部使用

    我收到错误的代码 numCrimesByLSOA lt crimes gt select LSOA code LSOA name Crime type gt group by LSOA code gt summarise Num crime
  • 问题:nginx:[emerg] mkdir()“/var/cache/nginx/client_temp”失败(13:权限被拒绝)

    我正在尝试跑步Nginx on Openshift但面临这个目录权限问题 由于此错误 容器未创建 以下权限设置为手动创建的文件 drwxr xr x 3 root root 79 Dec 22 02 50 etc nginx drwxr x
  • 车祸最低门槛

    我正在使用加速度计来检测车祸 我遇到了检测车祸所需的最小阈值的问题 检测车祸所需的最低阈值是多少 Override public void onSensorChanged SensorEvent event float x event va
  • 垂直或水平调整 div 大小

    如何在不使用 css 属性的情况下调整 div 垂直或水平大小 仅使用纯 javascript 代码从高度或宽度调整大小 HTML div div This is the top side s content div div div div
  • 如何强制 Git (2.5+) HTTP 传输更喜欢 SPNEGO 而不是基本身份验证?

    Summary 我正在使用 Git for Windows 2 5 1 通过 Kerbesized Git 服务器进行身份验证 当我使用表单中的 URL 时https el2 gitlab sa c kkm GrammarTools git
  • 导出到 Apps 脚本 web 应用程序的图表数据为空

    我有一个 Google 表格 我正在使用它作为我的团队正在开展的项目的数据库 我想做的是使用这些数据在 Google 网站上构建不同的屏幕 例如 我已经能够添加一个显示所有活动项目的下拉列表 选择项目后 将返回并显示 HTML 表格 现在
  • 如何在 VSC 中注释/取消注释 jsx(使用键盘 `cmd /`)?

    谁能告诉我如何在 VSC 中注释 JSX 代码 我看了下面列出的文章 似乎都没有给出具体的解决方案 而且票证似乎已经关闭 声称评论 取消评论功能已在VSC上得到妥善解决 但是 按照建议尝试以下方法后 我仍然遇到问题 在 VSC 上禁用 su
  • 二维数组的线性排序

    我是 C 编程新手 正在尝试编写一些排序程序 我编写了线性 正常排序的程序 现在我想做一个程序来对二维数组进行排序 即如果矩阵是 4 6 1 3 2 9 5 7 8 那么结果应该是 1 2 3 4 5 6 7 8 9 由于您希望 2D 数组
  • 控制 genoPlotRplot_gene_map 中的边距

    我正在制作一个plot gene map数字由genoPlotR R包 它给出了一个水平系统发育树 其中与每个叶子对齐的是一个基因组片段 这是一个简单的例子 说明了我的用法和问题 The plot gene map函数需要一个ade4的包p