2017-09-24 8 views
-2

"original"、 "pos1"、 "pos2"の3つの列があります。各行は個人です。私は、 "オリジナル"がx軸上にあり、pos1とpos2の値がy軸上にある散布図を作成したい。したがって、それぞれのオリジナルはpos1ドットとpos2ドットを持ちます。 pos1ドットとpos2ドットを区別するために2つの異なる色を作成できます。しかし、私が望むのは、それぞれの個人に対してpos1とpos2の間に行を追加することです。 100人の個人がいる場合は、それぞれpos1とpos2を結ぶ100本の短い線があります。私がggplotでこれを行う方法はありますか?rggplot2散布図の各行に各列を接続

ありがとうございました!

答えて

2

あなたが探しているような音geom_segment以下のような何かは仕事ができる:

library(ggplot2) 

ggplot(df, aes(x = original)) + 
    geom_point(aes(y = pos1, col = "pos1")) + 
    geom_point(aes(y = pos2, col = "pos2")) + 
    geom_segment(aes(xend = original, 
        y = pos1, yend = pos2)) + 
    ylab("positions") + 
    scale_colour_manual(name = "Position", 
         values = c(pos1 = "red", 
           pos2 = "blue")) 

enter image description here

データ:

set.seed(1) 
df <- data.frame(
    original = 1:100, 
    pos1 = rnorm(100), 
    pos2 = rnorm(100, mean = 5) 
) 

をそれはあなたのために動作しない場合は、あなたの実際のデータのサンプルを共有してください。

+0

ありがとう、リン。これはまさに私が探していたものです!大変感謝しています! –