2012-04-01 32 views
5

我有一個平均值和四分位數範圍的表格。我想創建一個點圖,點將顯示這個平均值,並且一個橫條將穿過點,以顯示四分位數範圍。換句話說,點將在一個條的中點,其長度將等於我的四分位數範圍數據。我在R.將點差數據添加到R中的dotplots中

例如工作,

labels<-c('a','b','c','d') 
averages<-c(10,40,20,30) 
ranges<-c(5,8,4,10) 
dotchart(averages,labels=labels) 

在範圍將被加入到這一情節一樣吧。

任何想法?

謝謝!

回答

8

另一種方法,使用基地。

labels <- c('a', 'b', 'c', 'd') 
averages <- c(10, 40, 20, 30) 
ranges <- c(5, 8, 4, 10) 
dotchart(averages, labels=labels, xlab='average', pch=20, 
     xlim=c(min(averages-ranges), max(averages+ranges))) 
segments(averages-ranges, 1:4, averages+ranges, 1:4) 

dotchart with error bars

4

GGPLOT2有這樣一個很好的工具:

library(ggplot2) 

labels<-c('a','b','c','d') 
averages<-c(10,40,20,30) 
ranges<-c(5,8,4,10) 

x <- data.frame(labels,averages,ranges) 

ggplot(x, aes(averages,labels)) + 
geom_point() + 
geom_errorbarh(aes(xmin=averages-ranges,xmax=averages+ranges)) 

使你像一個情節:

Dot plot with ranges

+1

太棒了!並且爲了確保我理解,每次最後一行應該是(範圍/ 2),以獲得平均值每邊的一半範圍,是正確的? – Pascal 2012-04-01 06:35:39

+0

取決於您如何定義範圍,但是如果它們代表實際範圍(最小值和最大值之間的差值)比是。如果他們是標準的錯誤數字,那麼比我上面對待他們的方式就是你需要的。 – 2012-04-01 06:40:19

7

爲了記錄在案,這裏有一個的解決方案,它使用一對夫婦的功能來自Hmisc包裝:

library(lattice) 
library(Hmisc) 

labels<-c('a','b','c','d') 
averages<-c(10,40,20,30) 
ranges<-c(5,8,4,10) 
low <- averages - ranges/2 
high <- averages + ranges/2 
d <- data.frame(labels, averages, low, high) 

Dotplot(labels ~ Cbind(averages, low, high), data = d, 
     col = 1,          # for black points 
     par.settings = list(plot.line = list(col = 1)), # for black bars 
     xlab = "Value") 

enter image description here