我有一个表,上面有平均值和四分位数范围。我想创建一个点图,其中的点将显示这个平均值,一个条形图将延伸通过点,以显示四分位数范围。换句话说,点将位于条形的中点,其长度将等于我的四分位数范围数据。我在R工作。
例如,
labels<-c('a','b','c','d')
averages<-c(10,40,20,30)
ranges<-c(5,8,4,10)
dotchart(averages,labels=labels)其中范围将以条形图的形式添加到此图中。
有什么想法吗?
谢谢!
发布于 2012-04-01 21:53:32
还有另一种方法,使用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)

发布于 2012-04-01 14:43:19
作为记录,这里是一个晶格解决方案,它使用了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")

发布于 2012-04-01 14:30:02
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))为您提供如下所示的图:

https://stackoverflow.com/questions/9962259
复制相似问题