2017-09-06 14 views
1

私はこのデータフレームをdfの下にdf<- read.table("WT1.txt", header= TRUE)と読む。私はヒストグラムに各長さの値のA C G Tのラベル付けをプロットしたいと思います。これをプロットする良い方法はありますか?異なる配列長のDNAの頻度をプロットするバープロット

df

length  A  C  G  T 
    17 95668 73186 162726 730847 
    18 187013 88641 120631 334695 
    19 146061 373719 152215 303973 
    20 249897 73862 115441 343179 
    21 219899 82356 109536 636704 
    22 226368 101499 111974 1591106 
    23 188187 112155 98002 1437280 
+1

ヒストグラムは、連続確率変数のためのものです。棒グラフが欲しいですか?正確に出力がどのように見えますか?あなたが望む出力がわからない場合、これは実際にスタックオーバーフローに適したプログラミングの質問ではありません。 [stats.se]または別のスタック交換サイトで統計データの視覚化に関するヘルプを依頼できます。 – MrFlick

+0

はい、それは混乱だと思う、私はバープロットが必要です。ありがとう – MAPK

+0

@MAPK周波数プロットで私の答えを更新しました – PoGibas

答えて

3

あなたは、変数lengthによって長い形式にデータフレームを溶融し、ggplot2と積み上げ棒グラフをプロットできます。

df <- read.table(text= 
    "length  A  C  G  T 
    17 95668 73186 162726 730847 
    18 187013 88641 120631 334695 
    19 146061 373719 152215 303973 
    20 249897 73862 115441 343179 
    21 219899 82356 109536 636704 
    22 226368 101499 111974 1591106 
    23 188187 112155 98002 1437280", header=T) 
library(reshape2) 
df <- melt(df, id.vars = "length") 
library(ggplot2) 
ggplot(df)+ 
    geom_bar(aes(x=length, y=value, fill=variable), stat="identity") 
1

使用dplyr各拠点のための周波数を計算し、 ggplot2をプロットバープロットに変換します。私はstat = "identity"の代わりにstat = "identity", position = "dodge"を使用するほうが好きです。なぜなら、どのようなデータが好きなのかが分かりやすいからです。

library(tidyverse) 

gather(df, Base, value, -length) %>% 
    group_by(length) %>% 
    mutate(frequency = value/sum(value)) %>% 
    ggplot(aes(factor(length), y = frequency, fill = Base))+ 
     geom_bar(stat = "identity", position = "dodge", 
       color = "black", width = 0.6) + 
     labs(x = "Base pairs", 
      y = "Frequency", 
      fill = "Base") + 
     scale_y_continuous(limits = c(0, 1)) + 
     scale_fill_brewer(palette = "Set1") + 
     theme_classic() 

enter image description here

関連する問題