2016-12-23 10 views
2

を使用して、箱ひげ図で特定のグループのデータを着色:Colouring different group data in boxplot using rが、私は特定の列を強調表示する必要があり、これが見つかりました:私はでグラフを並べ替えています。さらに、http://www.r-graph-gallery.com/23-add-colors-to-specific-groups-of-a-boxplot/の並べ替えや質問はこの1つのようになりますR

をこれと同様に、意味:今すぐ

bymean <- with(data, reorder(sample, trait, mean, na.rm = TRUE)) 
boxplot(trait~bymean, data=data, 
     col=ifelse(levels(data$sample)=="cpt2", "red", 
      ifelse(levels(data$sample)=="cpt12", "blue", 
      ifelse(levels(data$sample)=="cpt13", "green", 
      ifelse(levels(data$sample)=="cpt30", "yellow", "grey"))))) 

Sorting a boxplot based on median value

最終結果はこのようなものでなければなりません。 「形質」を変更すると、データの並べ替えや色の並べ替えがデータとペアになるように指定します。しかし、それは単に動作しません。色は、青色(cpt12)、緑色(cpt13)、赤色(cpt2)、および黄色(cpt30)のサンプルのアルファベット順に従って設定されます(並べ替え後のサンプルがx軸上のどこにあるかにかかわらず)。

ここでavailbleで、元のファイルの小さいバージョン:https://drive.google.com/file/d/0B1kEh3I4podcaUd5NWJaNkhPS0E/view

答えて

1

色ベクトルの順序がボックスに順番に整列プロット。したがって、ボックスプロット内のボックスの順序が並んでいれば、色を並べ替える必要があります。あなたの場合は、コードの最初の行でレベルの順序を並べ替えることになります。
このソリューションでは、データフレームを作成して、期待されるレベルを目的の色と一致させ、余分のデフォルトを組み込みます。次に、マッチ関数を使用して、適切な順序で色のベクトルを作成します。

この試し:

bymean <- with(data, reorder(sample, trait, mean, na.rm = TRUE)) 
colordf<-data.frame(fac=c("cpt2", "cpt12", "cpt13", "cpt30", NA), 
        color = c("red", "blue", "green", "yellow", "grey")) 

plotcolor<-colordf$color[match(levels(bymean), colordf$fac, nomatch=5)] 

boxplot(trait~bymean, data=data, 
     col=plotcolor) 
+1

plotcolor <-colordf $色[マッチ(レベル(bymedian)、colordf $ FAC、NOMATCH = 5)] にplotcolor <-colordf $色[マッチ(レベル( bymean)、colordf $ fac、nomatch = 5)] –

+0

ありがとう、訂正しました。 – Dave2e

+0

元のファイルを追加しました –

関連する問題