2017-03-08 7 views
0

私は基本的に、それぞれ異なる要素で色付けされた2つの異なるプロットを重ね合わせようとしています。要因レベルの)。例えば1つのggplotで2つの異なる要素から色を制御する

、私はこれらの二つの異なるデータフレーム持っていると言う:

labels1 <- factor(rep(LETTERS[1:2], each=5), levels=LETTERS[2:1]) 
dfp1 <- data.frame(L1=labels1, x=1:10, y=rep(1:2, each=5)) 

labels2 <- factor(rep(letters[1:2], each=5), levels=letters[2:1]) 
dfp2 <- data.frame(L2=labels2, x=(1:10), y=rep(c(0.25, 0.75), each=5)) 

を、私はL1によって着色、最初の1の関数ecdfをプロットしたい:

p <- 
    ggplot(dfp1, aes(x=x, y=y, color=L1)) + 
    stat_ecdf() 

これはどこのプロットを生成し、 Bの色がAの前に来るA: enter image description here

これの上に2番目のデータフレームのポイントを重ねたい場合は、 AN

p + geom_point(data=dfp2, mapping=aes(x=x, y=y, color=L2)) 

を行うが、その後ggplotは、一つに二つの要因、L1およびL2を組み合わせて、自分のレベルにアルファベット順を使用しています。

enter image description here

私は、作るためにこれらのプロットのいくつかを持っています点のラベルが変化するので、このリファクタリングはプロット間の要素の色を完全に変更します。着色は私が行うことができますどのように

factor(c(as.character(labels1), as.character(labels2)), 
     levels=c(levels(labels1), levels(labels2))) 

に従って行われているように私には、あまりにも、与えられた順序で各因子の水準を維持するためにggplotを説得して、要因の秩序を維持したいと思いますそれ ?

答えて

0

あなたはこのような特定の順序を維持するために、名前のカラーパレットを使用することができます。

cust <- c("purple", "orange", "green", "brown") 
names(cust) <- c(levels(labels1), levels(labels2)) 

p + geom_point(data=dfp2, mapping=aes(x=x, y=y, color=L2)) + 
    scale_color_manual(values = cust) 
関連する問題