首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将分散数据添加到R中的点图中

将分散数据添加到R中的点图中
EN

Stack Overflow用户
提问于 2012-04-01 13:56:48
回答 3查看 2K关注 0票数 5

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

例如,

代码语言:javascript
复制
labels<-c('a','b','c','d')
averages<-c(10,40,20,30)
ranges<-c(5,8,4,10)
dotchart(averages,labels=labels)

其中范围将以条形图的形式添加到此图中。

有什么想法吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-01 21:53:32

还有另一种方法,使用base。

代码语言:javascript
复制
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)

票数 8
EN

Stack Overflow用户

发布于 2012-04-01 14:43:19

作为记录,这里是一个晶格解决方案,它使用了Hmisc包中的几个函数:

代码语言:javascript
复制
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")

票数 7
EN

Stack Overflow用户

发布于 2012-04-01 14:30:02

ggplot2有一个很好的工具来做这件事:

代码语言:javascript
复制
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))

为您提供如下所示的图:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9962259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档