2017-10-26 7 views
-1

この質問はすでに聞いてきたと思いますが、私は問題を解決したものは見つけられませんでした。異なる色を使ってggplot2で一連の四角形を描画してください

私は単純に一連の矩形を描き、x値またはy値ではなく、値に応じて色付けします。

ので:私は私が描きたい長方形のファイルの開始位置と終了位置から読んでいます:

file <- read.table("positions.txt", header=FALSE) 
names(file) <- c("start", "end") 

char_start <- as.character(file$start) 
first <- as.numeric(char_start) 

char_end <- as.character(file$end) 
last <- as.numeric(char_end) 

mydata <- data.frame(first, last) 

私はこのようなその後、私のプロットを作る:

plot <- ggplot() + geom_rect(data = mydata, aes(xmin = mydata$first, xmax = mydata$last, ymin = 2, ymax = 5)) 

は、今、私がしようとしていました他の値に応じて2つの異なる色で四角形を塗りつぶします。例えば、私が最初のファイルのサブセットを含む "positions_subset.txt"という別のファイルを持っているとします。矩形が両方に含まれている場合は、青色にしたい、そうでなければ赤色にします。

アイデア:

それでは、私はそれを行うことができるか考えて、ファイルに解析することであり、私は両方のファイルに座標ペアを見つけるたびに、私はそれ以外の場合は、ベクトルに「1」を追加"0"。だから最後に私はベクトルのようになる:

in_both <- c(1,0,0,1,0...) 

私は持っている長方形と同じ数の要素があります。その後、私は単純にやった:しかし

colors <- ifelse(in_both == 1, "blue", "red") 

を私はその後、私はエラーを取得する

ggplot() + aes(xmin = mydata$first, xmax = mydata$last, ymin = 2, ymax = 5, fill=colors)) 

ようにそれを行うにしようとした場合、「美学は、いずれかの長さ1またはデータと同じ(30)である必要があります。XMIN 、xmax、ymin、ymax、fill "

私はエラーが何を言っているのか理解していますが、どうしたらいいか分かりません。 x軸の各点が色情報を持つ必要が本当にありますか?

+0

、ないベクトルあなたはAESへの変数の名前を渡す必要があります次に

aes(xmin=first, xmax=last,...,fill=color) 

を使用

data$color<-colors 

の着色に使用する変数を含むあなたのデータに列を追加します。 !可能であれば、データの例とプロットの例を示してください。詳細はこちらをご覧ください:https://stackoverflow.com/a/5963610/4738478 – zlipp

答えて

1

ねえ

+0

ok私はundestand、ありがとう。しかし、色のデータ$ colorもベクトルではありませんか? – malajedala

+0

はい、あなたの色には対応しません。初期の色を得るには、scale_fill_manual(値=色)を使用する必要があります。https://stackoverflow.com/questions/36048033/manually-colouring-plots-with -scale-fill-manual-in-ggplot2-not-working – Cedric