2012-09-13 100 views

回答

4

正如@smillig提到的,您可以使用此實現GGPLOT2。下面的代碼重現了你非常好的情節 - 警告它非常棘手。首先加載GGPLOT2包,併產生了一些數據:

library(ggplot2) 
dd = data.frame(values=runif(21), type = c("Control", "Treated", "Treated + A")) 

下更改默認的主題:

theme_set(theme_bw()) 

現在我們所建立的情節。

  1. 構造一個基本對象 - 沒有被繪製:

    g = ggplot(dd, aes(type, values)) 
    
  2. 添加上的點:

    g = g + geom_jitter(aes(pch=type), position=position_jitter(width=0.1)) 
    
  3. 添加於:根據類型調整默認抖動和變化字形「盒子」:計算盒子的結束位置。在這種情況下,我選擇了平均值。如果你不想要這個盒子,只需要省略這一步。

    g = g + stat_summary(fun.y = function(i) mean(i), 
         geom="bar", fill="white", colour="black") 
    
  4. 添加上一些誤差條:計算所述上/下限和調節的條寬:

    g = g + stat_summary(
         fun.ymax=function(i) mean(i) + qt(0.975, length(i))*sd(i)/length(i), 
         fun.ymin=function(i) mean(i) - qt(0.975, length(i)) *sd(i)/length(i), 
         geom="errorbar", width=0.2) 
    
  5. 顯示的情節

    g 
    

enter image description here

  1. 在我上面的R代碼中,我使用stat_summary來計算實時需要的值。您也可以創建單獨的數據幀並使用geom_errorbargeom_bar
  2. 要使用base R,看看我對這個question的回答。
+0

謝謝csgillespie,你的2號鏈接實際上給了我幾乎所需的東西。但兩者都是很好的解決方案我調整了一些供我自己使用。 – crazian

+0

這樣做的目的是爲了能夠在一個情節框架中顯示兩組的中位數,以及數據點和異常值。 這裏是代碼: – crazian

+0

https://gist.github.com/9bfb05dcecac3ecb7491 – crazian

3

如果你不介意使用ggplot2包,有一個簡單的方法,使類似的圖形與geom_boxplotgeom_jitter。使用mtcars示例數據:

library(ggplot2) 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 
p + geom_boxplot() + geom_jitter() + theme_bw() 

產生如下圖:

enter image description here

的文檔可以在這裏看到:http://had.co.nz/ggplot2/geom_boxplot.html