2013-08-26 69 views
0

我正在使用分段線圖並希望根據一個因子(在此情況下爲病人ID)在y軸上對變量進行分組。我如何更改y上的刻度的寬度,以便根據他/她的ID對患者進行分組,並且每個唯一ID只有一個標籤?使用ggplot2中的geom_segment在y軸上對變量進行分組

我的數據和情節的一個例子如下。

ggplot(data) + 
    geom_segment(aes(x=age1, xend=age2, 
        y=PatientID, yend=PatientID, colour=mortality)) + 
    scale_colour_manual(values=c("green", "red", "black")) 

數據:

PatientID age1  age2 mortality 
11313   0  30  low 
11313   31  50  low 
11313   51  65  med 
11313   0  10  med 
11313   0  50  hi 
131NY   0  30  med 
143CA   24  27  hi 
165099   23  45  med 
165099   46  55  hi 
165099   40  55  med 
+0

歡迎堆棧溢出。而不是粘貼你的數據,請編輯你的問題,使用'dput()'輸出包含數據 - 參見[這個非常有用的問題](http://stackoverflow.com/questions/5963269/how-to - 製作一個很好的再現性例子)以獲得詳細信息和指導。像dput(head(data,20))這樣的東西應該可以做到。噢,最好不要調用你的數據'data',因爲這是R中內置函數的名字。 – SlowLearner

+0

它似乎與ggplot2_0.9.3.1一起工作 – Henrik

回答

0

我已經使用的採樣數據提供,但輸出似乎在問題中所描述的類似的希望的輸出。患者按ID分組,每個標籤只有一個標籤(請參見下面的11313)。我錯過了什麼嗎?

screenshot

library(ggplot2) 

mytext <- "PatientID,age1,age2,mortality 
11313,0,30,low 
11313,31,50,low 
11313,51,65,med 
131NY,0,30,med 
143CA,24,27,hi 
165099,23,45,med 
165099,46,55,hi" 

dat <- read.table(textConnection(mytext), sep = ",", 
        check.names = FALSE, 
        strip.white = TRUE, 
        header = TRUE) 

ggplot(dat) + 
    geom_segment(aes(x = age1, xend = age2, 
        y = PatientID, yend = PatientID, colour = mortality)) + 
    scale_colour_manual(values = c("green", "red", "black")) 
+0

我的錯誤,數據也應該有重疊的行,例如, PatientID = 11313; AGE-1 = 0; AGE2歲= 10;死亡率=低。如果使用唯一的ID,則這些標記相互重疊,並且如果我改變標識以反映該線(例如11313和11313a),則它們被繪製在沿着y的給定距離處。 – user2719033

+0

好吧,這正是爲什麼注意使用'dput'或類似方法來提供適當的數據子集很重要。請修改您的問題以反映您希望我們實際工作的數據,我們將有機會幫助您。 – SlowLearner

+0

修改數據以反映「重疊」線段。 – user2719033

相關問題