2017-05-09 12 views
0

奇妙なことに、私はこの問題を解決するためにオンラインで何かを見つけることができません。geom_lineグループとscale_color_manual予期しないエラーが発生する

データを生成:このデータフレームのヘッドがどのように見える

rm(list = ls()) 
library(ggplot2) 
X <- as.numeric(1:100) 
df <- data.frame(x=X,y=rnorm(n=100,sd=.1)+sin(X*pi/200),gp=1) 
for (i in 2:4) df <- rbind(df,data.frame(x=X,y=rnorm(n = 100,sd = .1)+sin(X*i*pi/200),gp=i)) 

x   y gp 
1 1 0.030678982 1 
2 2 0.108093934 1 
3 3 0.067512201 1 
4 4 0.186648638 1 
5 5 0.109397764 1 
6 6 -0.005158247 1 

健全性チェック:今すぐ

> unique(df$gp) 
[1] 1 2 3 4 

、私がやりたいことのすべては、プロットこれらです様々な4本のラインがと対照的にの色;つまり、私は次のことをしたくない:

上記のプロットで
> p <- ggplot(data = df,aes(x=x,y=y,group=gp,color=gp))+geom_line()+theme_bw() 
> p 

Bad Contrast Between Lines

、伝説は恐ろしいで、行は恐ろしいコントラストを持っています。なぜこれはとても難しいのですか?

Error: Continuous value supplied to discrete scale 

がどのように私はちょうど私の広範囲の色を与え、(group=gpによって標識)すべての行に適用するggplotを伝えることができます得

> p <- ggplot(data = df,aes(x=x,y=y,group=gp,color=gp))+geom_line()+theme_bw()+scale_color_manual(values = c('red','blue','green','black')) 
> p 

:だから私は、次のことを試してみましたか?

答えて

2

グルーピング変数( "gp")はクラス数値であるため、ggplot2は個別の値セットを連続変数に割り当てることが困難です。文字や要素として "gp"を再割り当てする場合は、上記のように手動で色を調整することができます。

rm(list = ls()) 
library(ggplot2) 
X <- as.numeric(1:100) 
df <- data.frame(x=X,y=rnorm(n=100,sd=.1)+sin(X*pi/200),gp=1) 
for (i in 2:4) df <- rbind(df,data.frame(x=X,y=rnorm(n = 100,sd = .1)+sin(X*i*pi/200),gp=i)) 

### Classify as character ### 
df$gp <- as.character(df$gp) 

### Plot ### 
p <- ggplot(data = df,aes(x=x,y=y,group=gp,color=gp)) + 
    geom_line() + 
    theme_bw() 
plot(p) 

enter image description here

### Manually adjust discrete colors ### 
p <- p + 
    scale_colour_manual(values = c("red", "blue", "green", "black")) 
plot(p) 

enter image description here

あなたが数値であなたのグループ化変数「GP」を残すことを望んでいた場合は、代わりに「scale_colour_gradient」を使用しての色のブックエンドを指定することができますラインを拡大縮小します。

### Reclassify as numeriC### 
df$gp <- as.numeric(df$gp) 

### Plot ### 
p <- ggplot(data = df,aes(x=x,y=y,group=gp,color=gp)) + 
    geom_line() + 
    theme_bw() + 
    scale_color_gradient(low = "red", high = "blue") 
plot(p) 

enter image description here

+0

素晴らしいです!ありがとうございました! –

+0

問題ありません!うれしかった –

関連する問題