добавление данных спреда в точечные участки в R - PullRequest
5 голосов
/ 01 апреля 2012

У меня есть таблица со средними и межквартильными диапазонами. Я хотел бы создать точечную диаграмму, где точка будет отображать это среднее значение, а полоса будет растягиваться через точку, чтобы показать межквартильный диапазон. Другими словами, точка будет находиться в средней точке стержня, длина которого будет равна моим данным по межквартильному диапазону. Я работаю в Р.

Например,

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

где диапазоны будут добавлены к этому графику в виде столбцов.

Есть идеи?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 01 апреля 2012

Еще один метод, использующий базу.

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

7 голосов
/ 01 апреля 2012

Для справки вот решение решетка , в котором используется пара функций из пакета 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

4 голосов
/ 01 апреля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...