1

379838 行のデータ フレームと、列に 13 個の変数 (13 個の臨床サンプル) があります。

 >  str( df)
'data.frame':   379838 obs. of  13 variables:
  $ V1 : num  0.8146 0.7433 0.0174 0.177 0 ...
 $ V2 : num  0.7465 0.5833 0.0848 0.5899 0.0161 ...
 $ V3 : num  0.788 0.843 0.333 0.801 0.156 ...
 $ V4 : num  0.601 0.958 0.319 0.807 0.429 ...
 $ V5 : num  0.792 0.49 0.341 0.865 1 ...
 $ V6 : num  0.676 0.801 0.229 0.822 0.282 ...
 $ V7 : num  0.783 0.732 0.223 0.653 0.507 ...
 $ V8 : num  0.69 0.773 0.108 0.69 0.16 ...
 $ V9 : num  0.4014 0.5959 0.0551 0.7578 0.2784 ...
 $ V10: num  0.703 0.784 0.131 0.698 0.204 ...
 $ V11: num  0.6731 0.8224 0.125 0.6021 0.0772 ...
 $ V12: num  0.7889 0.7907 0.0881 0.7175 0.2392 ...
 $ V13: num  0.6731 0.8221 0.0341 0.4059 0 ...

そして、変数を V1-V5 、 V6-V9 、 V10-V13 の 3 つのグループにグループ化し、各グループの変数に異なる色を割り当てる ggplot2 ボックス プロットを作成しようとしています。

私は次のコードを試しています:

    df1= as.vector(df[, c("V1", "V2", "V3","V4", "V5")])
    df2= as.vector(df[, c("V6","V7", "V8","V9")])
    df3=as.vector(df[, c( "V10","V11", "V12","V13")])
    sample= c(df1,df2,df3)

   library(reshape2)

  meltData1 <- melt(df, varnames="sample")

  str(meltData1)
 'data.frame':  4937894 obs. of  2 variables:
  $ variable: Factor w/ 13 levels "V1","V2","V3",..: 1 1 1 1 1 1 1 1 1 1 ...
  $ value   : num  0.8146 0.7433 0.0174 0.177 0 ...

   p=ggplot(data=meltData1,aes(variable,value, fill=x$sample))
   p+geom_boxplot()

それは私に白い箱ひげ図を与えます。変数の 3 つのグループに色を割り当てるにはどうすればよいですか? よろしくお願いします!

4

2 に答える 2

3

V1サンプル データが提供されなかったため、 からまでの名前の 13 列を含む新しいデータ フレームを作成しましたV13

df<-as.data.frame(matrix(rnorm(1300),ncol=13))

melt()ライブラリデータの関数を使用reshape2すると、ワイド フォーマットからロング フォーマットに変換されます。現在、データ フレームには と の 2 つの列がvariableありvalueます。

library(reshape2)
dflong<-melt(df)

長い形式に新しい列sampleが追加されます。ここでは、元のデータ フレームの行数と各グループの元の列数に応じてgroup1、 、group2、という名前を繰り返しました。group3

dflong$sample<-c(rep("group1",nrow(df)*5),rep("group2",nrow(df)*4),rep("group3",nrow(df)*4))

新しい列はfill=、グループ化に従って色を設定する引数で使用されます。

library(ggplot2)
ggplot(data=dflong,aes(variable,value, fill=sample))+geom_boxplot()

ここに画像の説明を入力

于 2013-02-13T17:47:24.740 に答える
2

これは、Didzis Elferts のフォローアップです。

目的: サンプルを 3 つの色グループに分割し、色グループ内で陰影が異なります。

コードの最初の部分は同じです。

df<-as.data.frame(matrix(rnorm(1300),ncol=13))
library(reshape2)
dflong<-melt(df)
dflong$sample<-c(rep("group1",nrow(df)*5),rep("group2",nrow(df)*4),rep("group3",nrow(df)*4))
library(ggplot2)

次に、パッケージ RColorBrewer を使用して色合いを選択します

library(RColorBrewer)

色のクラスごとに色のリストを作成する

col.g <- c(brewer.pal(9,"Greens"))[5:9] # select 5 colors from class Greens
col.r <- c(brewer.pal(9,"Reds"))[6:9] # select 4 colors from class Reds
col.b <- c(brewer.pal(9,"Blues"))[6:9] # select 4 colors from class Blues
my.cols <- c(col.g,col.r,col.b)

選択した色を見てみましょう:

image(1:13,1,as.matrix(1:13), col=my.cols, xlab="my palette", ylab="", xaxt="n", yaxt="n", bty="n")

そして、作成した色でプロットします

ggplot(data=dflong,aes(variable,value,colour=variable))+geom_boxplot()+scale_colour_manual(values = my.cols)

上記では、color コマンドと scale_colour_manual コマンドを使用して、線のみに色を付けています。以下では、fill と scale_fill_manual を使用します。

   ggplot(data=dflong,aes(variable,value,fill=variable))+geom_boxplot()+scale_fill_manual(values = my.cols)

これが私が探しているものの例です

PS私はまったくの初心者で、Rを自分で学んでいます。この質問は、私が学んだことを応用する機会だと考えました。

于 2013-02-13T20:27:02.983 に答える