1

次のヘッダー名を持つデータ フレームを使用しています。

> [1] "Filename" "Strain" "DNA_Source" "Locus_Tag" "Product" "Transl_Tbl" "Note" "Seq_AA" "Protein_ID"

次のコードを使用して、特定の細菌株内で見つかった遺伝子の数を示すグラフを取得します。

png(filename=paste('images/Pangenome_Histogram.png', sep=''), width=3750,height=2750,res=300)
par(mar=c(9.5,4.3,4,2))
print(h <- ggplot(myDF, aes(x=Strain, stat='bin', fill=factor(Filename), label=myDF$Filename)) + geom_bar() +
      labs(title='Gene Count by Strain Pangenome', x='Campylobacter Strains', y='Gene Count\n') +
      guides(title.theme = element_text(size=15, angle = 90)) + theme(legend.text=element_text(size=15), text = element_text(size=18)) +
      theme(axis.text.x=element_text(angle=45, size=16, hjust=1), axis.text.y=element_text(size=16), legend.position='none', plot.title = element_text(size=22)) )

ここに画像の説明を入力

少しわかりにくいかもしれませんが、たとえば、いくつかの菌株には多色のバーがあります。これは、その菌株の遺伝子の一部が細菌の染色体以外のソース (または細菌が複数の染色体を持っている場合は複数の染色体) に由来することを示しています。 . 適切な位置で遺伝子のソース (「DNA_Source」) に従ってバーにラベルを付けたいと思います。

png(filename=paste('images/Pangenome_Histogram.png', sep=''), width=3750,height=2750,res=300)
par(mar=c(9.5,4.3,4,2))
print(h <- ggplot(myDF, aes(x=Strain, stat='bin', fill=factor(Filename), label=myDF$Filename)) + geom_bar() +
      labs(title='Gene Count by Strain Pangenome', x='Campylobacter Strains', y='Gene Count\n') +
      guides(title.theme = element_text(size=15, angle = 90)) + theme(legend.text=element_text(size=15), text = element_text(size=18)) +
  geom_text(aes(label=DNA_Source, y='identity'), color='black', vjust=-5, size=4) +
      theme(axis.text.x=element_text(angle=45, size=16, hjust=1), axis.text.y=element_text(size=16), legend.position='none', plot.title = element_text(size=22)) )

これは私を近づけますが、y軸からカウントを削除し(そして左下側に「アイデンティティ」という単語を追加します)、貢献を互いに重ねてラベル付けするので、そうでない限り読むことができません同じ言葉。

ここに画像の説明を入力

最初の画像のように y 軸にラベルを付け、2 番目の画像にラベルを付けたいと思います、これらのラベルをヒストグラムの対応する色部分内に表示したいと思います (ここと視覚的に似ています:積み重ねられたデータ値の表示ggplot2 の棒グラフ) ですが、ggplot2 パッケージを使用して実現したいと考えています

これが明確であることを願っています。助けていただければ幸いです。よろしくお願いします。

ここに少しのデータがあります (tail(dput(myDF[c(2, 3, 5)])))...

          Strain DNA_Source                             Product
12299 Campy3194c    Plasmid Type VI secretion protein, VC_A0111
12300 Campy3194c    Plasmid           Type VI secretion protein
12301 Campy3194c    Plasmid                              Tgh104
12302 Campy3194c    Plasmid                        protein ImpC
12303 Campy3194c    Plasmid           Type VI secretion protein
12304 Campy3194c    Chromosome                           Tgh079
4

1 に答える 1

2

次のようなデータセットがあるとします。

library(data.table)
library(ggplot2)
set.seed(123)
dna_src <- c("Chromosome", "Plasmid")
myDF <- data.table(Strain = c(rep("Campy3149c", 100),
                              rep("Campy31147q", 100)),
                   DNA_Source = c(sample(dna_src, size = 100, replace = T, 
                                    prob = c(0.9, 0.1)),
                                  sample(dna_src, size = 100, replace = T, 
                                    prob = c(0.7, 0.3))))
head(myDF)
#       Strain DNA_Source
#1: Campy3149c Chromosome
#2: Campy3149c Chromosome
#3: Campy3149c Chromosome
#4: Campy3149c Chromosome
#5: Campy3149c    Plasmid
#6: Campy3149c Chromosome

を使用して、必要なほとんどの情報data.tableを含む短いデータにデータを折りたたむことができますdata.table。唯一の追加は、次のように計算されるラベルの y 値です。

dt <- myDF[, .(countStrain = .N), by = c("Strain", "DNA_Source")][order(Strain, DNA_Source)]

# add the y-values for the plot
dt[, yval := cumsum(countStrain) - 0.5 * countStrain, by = Strain]

最後に、値をプロットします

ggplot(dt, aes(x = Strain, y = countStrain, fill = DNA_Source)) + 
  geom_bar(stat = "identity") + 
  geom_text(data = dt, aes(x = Strain, y = yval, label = DNA_Source))

次のようなプロットになります。

プロット

于 2015-11-13T17:53:56.173 に答える