【问题标题】:Building stacked bar plot for specific data organisation为特定数据组织构建堆叠条形图
【发布时间】:2019-05-20 11:03:12
【问题描述】:

我想构建堆积条形图,其中 x 轴代表基因组(或仅生物体)的数量,y 轴代表基因簇的数量,它们出现在基因组的确切数量中。我知道这些基因来自哪些生物体,我希望每个条形图都显示每个基因组在构建这个条形图时的影响。

我的数据示例:

df = data.frame (genomes_involed = c(1,2,2,3,3,1), number_of_genes = c(1,3,2,3,4,2), genome1_genes = c("A","B","*", "B", "A,M","*"), genome2_genes = c("*","C,B","E", "D", "N", "*"), genome3_genes = c("*","*", "L", "H", "O", "P,A"))

地点:

行是基因簇;

1) 第一列显示每个基因簇中涉及的基因组数量;

2)第二列代表簇中基因的数量;

3) 第 3-5 列代表来自不同基因组的基因的具体名称;

“*”表示该基因组的簇中没有基因。

它或多或少有特定的组织,这就是为什么我不确定如何以正确的方式放置它,例如在这个 ggplot 函数中:

ggplot(df, aes(x = factor(Time), y = Value, fill = factor(Type))) + geom_bar(stat="identity", position = "stack")

结果我想在 x 轴上得到 3 个条形,代表基因组 1,2 或全部 3 个; y 轴表示在 1、2 或所有 3 个基因组中发现的簇数;并显示每个基因组百分比对构建每个混凝土条的影响。

Desired output for this sample is here

【问题讨论】:

    标签: r ggplot2 bar-chart data-visualization bioinformatics


    【解决方案1】:

    我有点困惑,但我认为您是说存在多种生物体,每个生物体都有基因组 1、2 或 3。您需要 x 轴上的三个条形 - 一个代表基因组 1,一个代表基因组对于基因组 2,一个用于基因组 3 - 堆栈将显示有多少具有基因组 1 的生物有 1 个基因簇,有多少 2 个基因簇,以及有多少有 3(等等。对于其他每个基因组)?

    df = data.frame (genomes_envolved = c(1,2,2,3,3,1), number_of_genes = c(1,3,2,3,3,2), genome1_genes = c("A","B","*", "B", "A,M","*"), genome2_genes = c("*","C,B","E", "D", "N", "*"), genome3_genes = c("*","*", "L", "H", "O", "P"))
    
    df[df=="*"]<-NA #I changed asterisk to NA
    df$genomes_envolved<-as.factor(df$genomes_envolved)
    df$number_of_genes<-as.factor(df$number_of_genes)
    
    ggplot(data = df, aes(x = genomes_envolved,fill=number_of_genes)) + geom_bar()
    
    

    【讨论】:

    • 亲爱的 Emilio,感谢您的回答。使用 NA 的提示似乎足够合理,我不知道它可以这样使用。但可能我没有把情节的想法描述得足够好,所以我编辑了样本并添加了预期输出的图片。
    • 啊,现在我明白了。您不能直接按照数据在此数据框中设置数据的方式进行操作,需要对其进行重组,以便您可以将每个基因组中有多少个基因制成表格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2016-11-30
    • 2017-11-01
    • 1970-01-01
    • 2018-04-01
    • 2020-10-05
    相关资源
    最近更新 更多