2012-04-01 10 views
5

平均と四分位範囲のテーブルがあります。ドットがこの平均を示し、バーがドットを通って広がり、四分位範囲を示すドットプロットを作成したいと思います。言い換えれば、ドットはバーの中間点にあり、その長さは四分位範囲データに等しくなります。私は、例えばR.ドットプロットにスプレッドデータを追加するR

範囲は、その後のバーとしてこのプロットに追加されます
labels<-c('a','b','c','d') 
averages<-c(10,40,20,30) 
ranges<-c(5,8,4,10) 
dotchart(averages,labels=labels) 

を働いています。

アイデア?

ありがとうございます!ここでは、レコードの

Dot plot with ranges

答えて

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は、これを行うための優れた施設がありますの機能を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

+1

素晴らしいです!私が理解していることを確認するために、最後の行は毎回(範囲/ 2)、平均の両側で半分の範囲を取得する必要があります、正しい? – Pascal

+0

範囲をどのように定義したかによって異なりますが、実際の範囲(最小値と最大値の差)が「はい」よりも大きい場合は範囲​​が決まります。それらが標準誤差数値である場合、私がそれらをどのように扱ったかは、必要なものです。 –

7

カップルを使用しています格子ソリューション、です:

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)) 

はあなたのようなプロットを与える:

関連する問題