2012-03-23 50 views
2

我的問題如下:在R包ggplot2 - 盒圖 - 如何標記晶須末端的兩個點(上下兩個點)例如帶有一個「x」標記,以便在盒須的最上端有一個盒狀圖和兩個額外的「x」標記,另一個標記將位於下須的下端。標記ggplot2中每個boxplot中兩個晶須的末端R統計

我尋覓了很多互聯網的答案,但無法找到。我只能使用stat_summary和平均函數數據在boxplot上添加「x」標記。

如何做其他兩個點?

要在同一頁上,請使用mtcars數據庫R和使mpgboxplot爲y軸和cyl爲x軸。餘將根據數據框mtcars結束3個箱櫃。

據於R

The upper end defined as Q3+1.5*IQR 
The lower end defined as Q1-1.5*IQR 
Note: IQR = Q3 - Q1 
+0

如果你顯示你所做的事情,你更有可能得到答案。發表你的例子,用mtcars創建一個x的意思。 (一旦你這樣做了,你可能會意識到你可以在你的數據集的'min'和'max'處繪製一個x。) – Andrie 2012-03-23 17:48:56

回答

2

你只需要計算箱線圖的終點,並添加它們,使用stat_summary。例如

##Load the library 
library(ggplot2) 
data(mpg) 

##Create a function to calculate the points 
##Probably a built-in function that does this 
get_tails = function(x) { 
    q1 = quantile(x)[2] 
    q3 = quantile(x)[4] 
    iqr = q3 -q1 
    upper = q3+1.5*iqr 
    lower = q1-1.5*iqr 
    if(length(x) == 1){return(x)} # will deal with abnormal marks at the periphery of the plot if there is one value only 
    ##Trim upper and lower 
    up = max(x[x < upper]) 
    lo = min(x[x > lower]) 
    return(c(lo, up)) 
} 

使用stat_summary將其添加到您的情節:

ggplot(mpg, aes(x=drv,y=hwy)) + geom_boxplot() + 
    stat_summary(geom="point", fun.y= get_tails, colour="Red") 

另外,你的終點的定義是不太正確的。有關更多詳情,請參閱我的answer另一個問題。

+0

非常感謝我正在尋找的東西,但是你能不能請我做另一個青睞。如何將這個很好的書面功能輸入到Deducer軟件包中。在幾何元素下有點,然後可以選擇總結,然後選擇自定義,這裏我需要你的幫助來輸入函數get_tails。在此先感謝 – doctorate 2012-03-23 19:59:24

+0

對不起,我從來沒有使用推定器包 – csgillespie 2012-03-25 09:44:05

+0

嗨csgillespie,我已經試過了功能get_tails和工作正常,但在這個函數中一個缺陷:如果真的發生了,我在一個變量只有一個數據值和我想將它表示爲boxplot,它應該表現爲一條線,即所有東西,但是兩個尾巴的標記都將顯示在繪圖外圍的boxplot的兩端(boxplot在這種情況下將是一條小線,因爲一個價值是存在的),那麼如何在函數中解決這個問題,以防止它出現在情節中,如果有這種情況或者你有其他建議/解決方案? – doctorate 2012-03-28 23:46:49