Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将排列数据添加到R中的点图_R_Plot - Fatal编程技术网

将排列数据添加到R中的点图

将排列数据添加到R中的点图,r,plot,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) labelsggplot2有一个很好的工具来实现这一点: librar

我有一张表,上面有平均值和四分位区间。我想创建一个点图,点会显示这个平均值,一个横条会穿过点,以显示四分位间距。换句话说,圆点将位于一条线的中点,其长度将等于我的四分位间距数据。我在R工作

比如说,

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

labelsggplot2有一个很好的工具来实现这一点:

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))
库(ggplot2)

标签对于记录,这里有一个lattice解决方案,它使用了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")
库(晶格)
图书馆(Hmisc)

标签另一种方法,使用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)

太棒了!为了确保我理解,每次最后一行应该是(范围/2),以得到平均值每边范围的一半,对吗?取决于你如何定义范围,但如果它们代表实际范围(最小值和最大值之间的差异),则不是“是”。如果它们是标准误差数字,那么我在上面如何处理它们就是您所需要的。