2012-11-28 2 views
6

Я хотел бы создать барплот, где бары нанесены на верхнюю часть горизонтальной линии.участок линии за баррель

Следующий код выполняет это:

y <- c(1,2,3,5) 
barplot(y) 
abline(h=mean(y)) 
barplot(y, add=T) 

Однако я обеспокоен тем, что параметр add=T в barplot(), если использовать повторно, можно ввести печати артефакты. Мне любопытно, есть ли альтернатива вышеуказанному коду (хотя приведенный выше код может быть самым быстрым методом).

ответ

11

Вы могли бы просто построить ничего в своем первом вызове:

y <- c(1,2,3,5) 
barplot(rep(NA,length(y)),ylim=c(min(0,y),max(y)),axes=FALSE) 
abline(h=mean(y)) 
barplot(y, add=T) 

enter image description here

+0

Отредактировано так, что ylim = c (min (0, y), max (y)) в случае, когда y содержит отрицательные значения –

7

Если вы используете ggplot2, вам не о чем беспокоиться. Ваша задача сводится к порядку GeoM:

ggplot(data.frame(x=1:4, y=y), aes(x=x, y=y)) + 
    geom_bar(stat="identity") + 
    geom_hline(yintercept=mean(y), color="red") 

line in front

сравнения:

ggplot(data.frame(x=1:4, y=y), aes(x=x, y=y)) + 
    geom_hline(yintercept=mean(y), color="red") + 
    geom_bar(stat="identity") 

line behind

+0

Спасибо, это полезно знать. Я должен еще раз взглянуть на ggplot2. – andrewj

Смежные вопросы