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

Pas*_*cal 5 plot r

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

例如,

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

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

有任何想法吗?

谢谢!

jba*_*ums 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)
Run Code Online (Sandbox Code Playgroud)

带有错误栏的dotchart


Jos*_*ien 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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述