2011-05-30 124 views
2

我嘗試在boxplot圖的頂部顯示一條線,x由factor組成。R:在同一個boxplot圖上畫一條線

此代碼工作做好:

x <- c(91,92,93,125,123,140) 
y <- c(200,260,220,300,350,360) 
d1 <- data.frame(x=x,y=y) 
d1$f1 = factor(round(d1$x/10)) 
qplot(f1,y,data=d1,geom="boxplot") 
d2<-data.frame(x2=c(90,140),y2=c(210,320)) 
qplot(x2,y2,data=d2,geom="line") 

但是當我嘗試到線添加到圖表...

qplot(f1,y,data=d1,geom="boxplot") + geom_line(data = d2, aes(x = x2, y=y2)) 

要看到我的結果:http://jeb-files.s3.amazonaws.com/Clipboard01.jpg

我如何設法讓我的線與我的boxplot?

謝謝!

+0

這是「正常」行爲ggplot基於你餵它。爲什麼你把x轉換成一個因子?作爲現在因素的x軸在內部被表示爲整數值1 - 3。因此,用x值90到140來繪製線沒有多大意義。如果你改變'x2 = c(1,3)',那麼雖然我對這兩者中的任何一個的含義持懷疑態度,但情節的組成部分將會「對齊」。你想在這裏回答什麼是更大的圖片問題? – Chase 2011-05-30 22:27:23

+0

我想要的是將x值進行分組,因此我使用了一個因子!有另一種方法嗎?最重要的是,我有我想要顯示的數據,並在其上覆蓋方程曲線。 – jeb 2011-05-31 15:38:35

回答

8

A boxplot要求x值爲因子,而geom_line要求x值爲數值。你可以得到你想要的東西通過修改geom_line調用,這樣x值定義爲有序因素的數字版本從round(x2/10)獲得:

qplot(f1,y,data=d1,geom="boxplot") + 
geom_line(data = d2, aes(x = as.numeric(ordered(round(x2/10))), y=y2)) 

enter image description here

+0

感謝您的幫助!這比我迄今所做的要好,但是可以改變box plot的x軸而不是line?因爲,用我真實的數據,我有這個:[link](http://jeb-files.s3.amazonaws.com/Clipboard02.jpg)。紅線通常是曲線。 – jeb 2011-05-31 15:48:07