将传播数据添加到R中的点图

时间:2012-04-01 05:56:48

标签: r plot

我有一张平均值和四分位数范围的表格。我想创建一个点图,其中点将显示此平均值,并且条形图将延伸通过点,以显示四分位数范围。换句话说,点将位于条的中点,其长度将等于我的四分位数范围数据。我在R.工作。

例如,

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

然后将范围作为条形添加到该图中。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:8)

另一种方法,使用base。

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

答案 1 :(得分: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

答案 2 :(得分: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