在circos中使用circos函数

2024-01-01

有人能帮我吗 ?如何在数据中添加 circos 函数?当我尝试时,我收到一条错误消息,但它不会产生任何结果 我想做一个像 1 号表示一样的甜甜圈图形,但我还有另一个结果,我们可以在另一张图片中看到。试图跟随本指南 https://jokergoo.github.io/circlize_book/book/high-level-plots.html

我的数据是这样的:

        Name;Integrons_1;Integrons_2;Integrons_3;TEM;SHV;CTX_M;NDM;OXA_48
        HZ1410;1;0;0;1;1;0;1;1
        HZ0411;1;0;0;1;0;0;0;1
        WI1410;1;0;0;1;1;0;0;1
        WI0411;1;0;0;1;0;0;1;0
        FR1410;1;0;0;1;0;0;0;0
        FR0411;0;0;0;1;1;0;0;0
        CN1410;1;0;0;1;1;0;1;0
        CN0411;1;0;0;1;0;0;0;1
        SA0912;0;0;0;0;0;0;0;0
        SA0302;1;0;0;1;0;0;0;0
        BL0912;1;0;0;1;1;0;0;0
        BL0302;1;0;0;1;1;1;0;1
        CSI0912;1;1;0;1;0;0;0;1
        CSI0302;1;0;0;1;1;1;1;1
        CSII0912;1;1;0;1;0;1;1;0
        CSII0302;1;0;0;1;0;0;0;0
        BGI0503;1;1;1;1;1;0;0;0
        BGI0610;1;0;0;1;1;0;0;0
        BGII0503;1;1;1;1;1;0;0;0
        BGII0610;1;0;1;1;1;0;0;0
        BCI0503;1;0;1;1;1;0;1;1
        BCI0610;1;0;1;1;0;0;0;0
        BCII0503;1;0;1;1;1;0;1;0
        BCII0610;1;0;1;1;0;0;0;0
        BDI0503;1;0;0;1;1;0;0;0
        BDI0610;1;1;1;1;1;1;1;0
        BDII0503;1;0;1;1;0;1;0;0
        BDII0610;1;1;1;1;1;1;0;1
        YPI0503;1;0;1;1;0;0;0;0
        YPI0710;1;1;1;1;1;1;0;1
        YPII0503;1;0;1;1;0;0;0;1
        YPII0710;1;1;1;1;1;1;0;0
        YMI0503;1;1;1;1;1;0;1;0
        YMI0710;1;1;1;1;1;1;1;1
        YMII0503;1;1;1;1;1;0;0;1
        YMII0710;1;1;1;1;1;1;1;1
        YSI0503;1;1;0;0;1;0;0;0
        YSI0710;1;1;1;1;1;1;1;1
        YSII0503;1;1;0;1;1;0;0;0
        YSII0710;0;1;1;1;1;0;0;0

我的代码如下所示:

    #### IMPORT DES DONNEES ####
    nba = read.csv("essai_r.csv", sep=";", header=T)
    #attention : toujours utilise le format csv avec le sep = ";" pour avoir de 
    #beaux tableaux 


    #### INSTALLATION DES LIBRARY ####
    library(reshape)
    library(ggplot2)
    library(plyr)
    library(circlize)


    #### CREATION DES TABLEAUX : FCT MELT ####
    nba$Name <- with(nba, reorder(Name, GES))
    nba.m <- melt(nba)
    #pas utilise car ce n'est pas ce que je veux 
      #nba.m <- ddply(nba.m, .(variable), transform, value = scale(value))

    #### MODIFICATION DES DONNEES : FACTOR -> NUMERIQUES #### 
    # Convert the factor levels to numeric + quanity to determine size of hole.
    nba.m$var2 = as.numeric(nba.m$variable) + 15

    # Labels and breaks need to be added with scale_y_discrete.
    y_labels = levels(nba.m$variable)
    y_breaks = seq_along(y_labels) + 15


    #### CREATION DE LA HEATMAP (DEGRADE DE COULEUR UNIQUEMENT) ####
    p2 = ggplot(nba.m, aes(x=Name, y=var2, fill=value)) +
      geom_tile(colour="black") +
      scale_fill_gradient(low = "beige", high = "red") +
      ylim(c(0, max(nba.m$var2) + 0.5)) 
      scale_y_discrete(breaks=y_breaks, labels=y_labels) +
      coord_polar(theta="x") +
      theme(panel.background=element_blank(),
            axis.title=element_blank(),
            panel.grid=element_blank(),
            axis.text.x=element_blank(),
            axis.ticks=element_blank(),
            axis.text.y=element_text(size=5))

    ggsave(filename="plot_2.png", plot=p2, height=7, width=7)
    #sauvegarde le fichier dans le dossier 
    circos.par(start.degree = 90, gap.degree = 10)

    #### CREATION DE LA HEATMAP BIS (AVEC NOMS DE SITES )
    nba.labs <- subset(nba.m, variable==levels(nba.m$variable)[nlevels(nba.m$variable)])
    nba.labs <- nba.labs[order(nba.labs$Name),]
    nba.labs$ang <- seq(from=(360/nrow(nba.labs))/1.5, to=(1.5*(360/nrow(nba.labs)))-360, length.out=nrow(nba.labs))+80


    nba.labs$hjust <- 0
    nba.labs$hjust[which(nba.labs$ang < -90)] <- 1

    p3 = ggplot(nba.m, aes(x=Name, y=var2, fill=value)) +
      geom_tile(colour="black") +
      geom_text(data=nba.labs, aes(x=Name, y=var2+1.5,
                                   label=Name, angle=ang, hjust=hjust), size=3) +
      scale_fill_gradient(low = "beige", high = "steelblue") +
      ylim(c(0, max(nba.m$var2) + 1.5)) +
      scale_y_discrete(breaks=y_breaks, labels=y_labels) +
      coord_polar(theta="x") +
      theme(panel.background=element_blank(),
            axis.title=element_blank(),
            panel.grid=element_blank(),
            axis.text.x=element_blank(),
            axis.ticks=element_blank(),
            axis.text.y=element_text(size=5))
    nba.labs$ang[which(nba.labs$ang < -90)] <- (180+nba.labs$ang)[which(nba.labs$ang < -90)]

    #### Representation graphique ####
    p3

您的示例数据与您在本问题和上一个问题中使用的“nba”示例显着不同。这就是为什么你有这么多麻烦。以下是可视化实际数据的三种方法:

1.) Tidyverse geom_tile() 方法:

library(tidyverse)
#install.packages("vroom")
library(vroom)
#install.packages("ggrepel")
library(ggrepel)

df <- vroom(file = "example.txt")

df %>% 
  pivot_longer(cols = -c(Name), names_to = "category") %>% 
  ggplot(aes(x = Name, y = category, fill = value)) +
  geom_tile(colour = "white") +
  geom_text(aes(label = ifelse(Name == "BCI0503", category, "")),
            nudge_x = -0.5) +
  geom_text_repel(aes(label = ifelse(category == "TEM", Name, "")),
                  nudge_y = 2) +
  scale_fill_gradient(low = "beige", high = "red", breaks = c(0, 1)) +
  coord_polar(theta="x") +
  theme_void()

这看起来不太好 - 你可以在中间打一个“洞”,但我不认为这种类型的图适合你的数据。

2.) Circlize https://jokergoo.github.io/circlize_book/book/马戏团情节

#install.packages("circlize")
library(circlize)

mat = data.matrix(df)[,2:9]
rownames(mat) <- df$Name
col_fun1 = colorRamp2(c(0, 1), c("beige", "red"))
circos.par(gap.after = c(20))
circos.heatmap(mat, col = col_fun1,
               rownames.side = "outside",
               track.height = 0.4)
circos.track(track.index = get.current.track.index(),
             panel.fun = function(x, y) {
  if(CELL_META$sector.numeric.index == 1) { # the last sector
    cn = colnames(mat)
    n = length(cn)
    circos.text(rep(CELL_META$cell.xlim[2], n) + convert_x(1, "mm"), 
                1:n - 0.5, cn, 
                cex = 0.5, adj = c(0, 0.5), facing = "inside")
  }
}, bg.border = NA)

这更好了,但仍然不是很好。我相信问题是你的“计数”要么是 0 要么是 1 - 我认为另一种方法更适合这种类型的数据:UpSetR 图

3.) UpSetR 图 https://github.com/hms-dbmi/UpSetR

#install.packages("UpSetR")
library(UpSetR)

df_int <- df %>% 
  mutate(across(c(2:9), as.integer)) %>% 
  as.data.frame()

upset(df_int, order.by = "freq", sets.bar.color = "#56B4E9")

这就是我可视化此类数据的方式,但显然这取决于您最终想要如何描绘它。

如果您在原来的问题中包含了实际数据的样本,那么这个答案将需要大约 10 分钟而不是一个小时。在以后的问题中,请确保您的示例数据集与您的实际数据准确匹配。

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

在circos中使用circos函数 的相关文章

  • Shiny :针对所有错误显示一条消息

    我在 R 的 Shiny 中有一个应用程序 我想处理消息 以便用户看不到发生了什么错误 我知道通过 tags style type text css shiny output error visibility hidden shiny ou
  • 在ggplot2中,箱线图线的末尾代表什么?

    我找不到箱线图线条端点代表什么的描述 For example here are point values above and below where the lines end 我意识到盒子的顶部和底部是第 25 个和第 75 个百分位数
  • 构造奎因(自我复制功能)

    有没有人构建过 quine 生成自己源文本的副本作为其完整输出的程序 http www nyx net gthompso quine htm http www nyx net gthompso quine htm 在 R 中 quine 标
  • R ggplot2 分面保持比率但覆盖/定义输出图大小

    我目前正在使用 ggplot2 来比较不同组的统计数据 每个组属于不同的区域 这是通过运行 R 脚本的 Web 应用程序 tikiwiki CMS 插件 R 完成的 每个区域我可以有 2 到 30 个或更多组 相同的 R 脚本针对唯一网页中
  • 在列标题和配对变量中嵌入数据的数据透视表

    假设我有这样的数据 不幸的是 变量值嵌入在列名称中 library tidyr library dplyr dat lt tribble group var1 var meta1 var2 var meta2 group1 5 2 cat
  • 按名称包含在单个对象中的多个列对 data.frame 进行排序?

    我想排序一个data frame由多列组成 理想情况下使用基础 R 无需任何外部包 尽管如果有必要 就这样吧 读过如何按列对数据框进行排序 https stackoverflow com questions 1296646 how to s
  • 从 leafletProxy() 返回渲染的传单地图

    是否可以在渲染后在 Shiny 中检索传单地图 下面是一个代码示例 展示了如何生成地图leaflet 与返回的不同leafletProxy 即使它们在渲染时看起来完全相同 是否有一个功能可能不同于leafletProxy 获取实际的 htm
  • 在 R 中读入原始二进制数据并将其转换为整数

    我有一个二进制文件 其中包含编码为不同长度 主要是 2 4 字节 的有符号或无符号整数的数值 为了处理这些数据 我将文件的所需部分读取为raw向量与readBin 然后尝试将其转换为十进制 问题是 R的内置函数有限制 我不太明白 比如没有l
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • R 中舍入到下一个数量级的算法

    如果标题不清楚 我很抱歉 但我无法简洁地解释它 给定一个浓度向量 我想将最大值四舍五入到下一个数量级 即 345 到 1000 另外 我想将最小值四舍五入到较低的数量级 即 3 2 到 1 这些浓度也可能低于 1 因此例如 0 034 需要
  • 如果落在 R 中另一个数据集中的两个变量定义的范围内,则从一个数据集中获取变量值

    我有一个关于 R 中日期操作的问题 我已经查了好几天了 但在网上找不到任何帮助 我有一个数据集 其中有 id 和两个日期 另一个数据集具有相同的 id 变量 日期和价格 例如 x data frame id c A B C C date1
  • 关于在 LyX 中生成和交叉引用 knitr 图的意见

    我的目标是在 LyX 中包含一个knitr图 我可以在我的文档中交叉引用 我 插入了浮动图像 添加了标题和标签 在浮动图像中插入了 ERT 而不是图像 我所做的图片如下 我在这里检查过类似的问题 但没有人做我所做的事情 所以我在这里问 有没
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • 是否可以创建根据输入对象名称自行命名的列表?

    能够创建 R 列表对象而无需指定每个元素的名称对我来说非常有帮助 例如 a1 lt 1 a2 lt 20 a3 lt 1 20 b lt list a1 a2 a3 inherit name TRUE gt b a1 1 1 a2 1 20
  • 使用栅格包下载 SRTM 数据?

    我正在尝试使用 获取 SRTM 数据 raster R 中的包 但一旦我选择SRTM在 getData 命令中 我会收到以下错误 library raster srtm lt getData SRTM lon 16 lat 48 tryin
  • 错误:美学必须是长度一,或者在省略 NA 时与 dataProblems:personCategoryz 的长度相同

    我正在尝试使用泰坦尼克号数据集创建一个图表 该数据集查看女性 儿童和男性及其生存率 我创建了新的类别来读取数据 但当我尝试超越该点时 不断出现错误消息 当我运行一个图表来显示这一点时 它显示得很好 只是它有一个单独的 NA 数据类别 所以我
  • ggplot2 方面的内部排序

    我正在尝试在 ggplot2 中绘制一个方面 但我很难使不同方面的内部顺序正确 数据如下 head THAT EXT ID FILE GENRE NODE 1 CKC 1823 01 CKC Novels better 2 CKC 1824
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 时间序列,将月度数据改为季度

    现在我有一些每月数据 例如 1 1 90 620 2 1 90 591 3 1 90 574 4 1 90 542 5 1 90 534 6 1 90 545 etc 如果我使用 ts 函数 很容易将数据转换为时间序列结构 例如 Jan F
  • Pyspark - 一次聚合数据帧的所有列[重复]

    这个问题在这里已经有答案了 我想将数据框分组到单个列上 然后对所有列应用聚合函数 例如 我有一个包含 10 列的 df 我希望对第一列 1 进行分组 然后对所有剩余列 均为数字 应用聚合函数 sum 与此等效的 R 是 summarise

随机推荐

  • 将日期输入类型默认值设置为今天、明天、任意日期?

    在 HTML5 中 没有在 value 属性中指定 今天 的本机方法 这是我非常喜欢的 jQuery 代码 如何扩展此代码来设置 今天的日期到var today 明天的日期到var tomorrow 计算得出的任何日期var anydate
  • 如何在java中创建枚举对象

    我试图定义枚举类 Item 的三个不同对象 其权重在 0 到 20 之间以及每个项目的描述 这是我的代码 public enum Item Three Items with descriptions GOLD 2 gold SILVER 1
  • 如何使用Java中的文件中的特定行号读取特定行?

    在Java中 有什么方法可以从文件中读取特定行吗 例如 读取第 32 行或任何其他行号 对于小文件 String line32 Files readAllLines Paths get file txt get 32 对于大文件 try S
  • 如何在AWS EMR上重新启动yarn

    我正在使用 Hadoop 2 6 0 emr 4 2 0图像 我做了一些改变yarn site xml并希望重新启动纱线以使更改生效 有一个命令可以用来执行此操作吗 编辑 2017 年 10 月 26 日 AWS 官方已在此处发布了有关如何
  • Angular 5(Karma / Jasmine 测试)- 使用模拟后端来模拟错误消息的错误响应

    我不太明白 MockBackend 功能是如何工作的描述在这里 https angular io api http testing MockBackend 我对 Angular 完全陌生 我想编写一些测试用例 以确保当后端发生服务器错误时
  • 用于平铺渲染的 OpenGL 矩阵设置

    看完之后datenwolf 2011 年关于 OpenGL 中基于图块的渲染设置的回答 https stackoverflow com questions 6490728 capture snapshot of opengl window
  • 使用 Monkey Test 时如何防止输入设置

    我在 Android 设备 LG G4 中对我的应用程序进行了猴子测试 命令是 adb shell monkey p package name v 2000 但它可能会意外进入设置并更改我的设备的默认值 如何预防呢 Monkey支持黑名单
  • 使用 KVO 更改属性时发送通知

    我有一个名为myName在我的课堂上 比如 property nonatomic strong NSString myName 我需要在以下情况时发送通知myName属性的值发生改变 现在我正在做类似的事情 void setMyName N
  • 如何在设计时进行调试?

    我使用 UserControl 创建了一个自定义 ListView 当鼠标进入 ColumnHeader 时 它应该在设计时改变颜色 它有效 但我需要调试代码 如何在设计时调试代码 See 演练 在设计时调试自定义 Windows 窗体控件
  • 可以删除Android依赖吗?

    我有一个应用程序 到目前为止一直工作和编译得很好 但是 当我转到 导出 时 会自动添加 Android 依赖项 这会引发 转换为 Dalvik 格式失败 错误 1 我对此进行了研究 我知道这是因为 Android 依赖项添加了重复文件 我目
  • 加入具有不同排序规则问题的列

    我正在使用 SQL Server 2005 我有两个表 它们使用不同的排序规则 不允许连接具有不同排序规则的表中的列 例如不允许使用以下 SQL select table1column1 table2column2 from 我的问题是 为
  • C++/SDL2——渲染一个圆[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我用 SDL2 画一个实心圆 方向正确吗 我认为使用参数方程和趋于零的半径是可行的 但在处理器使用方面似乎效率很低 任何其他想法都非常感谢 提前
  • 如何从 Ruby on Rails 应用程序中的 OAuth::Unauthorized 异常中拯救出来?

    如何挽救 Ruby on Rails 应用程序中 OmniAuth 引发的 OAuth Unauthorized 异常 显然是这样的 rescue from OAuth Unauthorized with gt unauthorized 不
  • java nio 直接缓冲区上的压缩

    gzip 输入 输出流不在 Java 直接缓冲区上运行 是否有直接在直接缓冲区上运行的压缩算法实现 这样就不会产生将直接缓冲区复制到 java 字节数组进行压缩的开销 我无意转移你的问题 但这就是really你的程序中有一个好的优化点吗 您
  • 在 C# 中获取属性值(反射)的最快方法

    我想知道从对象的属性获取值 仅针对此问题 的最快方法是什么 经过一番搜索后 我在这个网站上看到了 MarkGravell 的帖子 他写了这段代码 using System using System Reflection using Syst
  • new Integer(123)、Integer.valueOf(123) 和 just 123 之间的区别

    最近我看到这样的代码 Java myMethod new Integer 123 我目前正在重构一些代码 声纳工具中有一个提示 使用这样的东西对内存更友好 myMethod Integer valueOf 123 但是在这种情况下 我认为使
  • 来自主线程的 VTK 窗口线程,C++

    我刚刚学习 VTK 和 C GUI 编程 希望有一个简单的问题 主应用程序在应用程序中的某个时刻启动渲染的窗口 希望在显示 VTK 窗口时主线程能够继续 是否有特定的方法可以将 VTK 窗口作为线程启动 我的环境是 Linux 可以使用 b
  • IFNDR 是否优先于可诊断的违规行为?

    简介 合规性 一般 2 https timsong cpp github io cppwp n4868 intro compliance general 2指定编译器应如何处理给定的程序 特别是它有两点涉及格式错误的程序 2 2 要求编译器
  • Numpy 重新索引前 N 个自然数

    我有一个索引非常稀疏的矩阵 行和列中的最大值都超过 130000 但其中只有少数行 列实际上具有非零值 因此 我希望通过前 N 个自然数将行索引和列索引移动为仅表示非零索引 从视觉上看 我想要一个像这样的示例矩阵 1 0 1 0 0 0 0
  • 在circos中使用circos函数

    有人能帮我吗 如何在数据中添加 circos 函数 当我尝试时 我收到一条错误消息 但它不会产生任何结果 我想做一个像 1 号表示一样的甜甜圈图形 但我还有另一个结果 我们可以在另一张图片中看到 试图跟随本指南 https jokergoo