Как я могу поместить высокий бар в барплот? - PullRequest
2 голосов
/ 24 января 2012

Следующий скрипт R генерирует столбик, который слишком высок, чтобы поместиться на графике. Обратите внимание, что полоса выходит за пределы оси Y и ее аннотация (в процентах) не отображается. Как я могу создать гистограмму, которая показывает весь высокий бар и его аннотацию?

png(filename = "plot.png")
x <- c("A", "B")
y <- c(2e6 + 10, 400)
sum_Y <- sum(y)
midpoints <- barplot(height = y, log = "y")
text(midpoints, y, sprintf("%.2f%%", y / sum_Y * 100), pos = 3)
dev.off()

a bar plot with a tall bar

Ответы [ 3 ]

5 голосов
/ 24 января 2012
png(filename = "plot.png")
x <- c("A", "B")
y <- c(2e6 + 10, 400)
sum_Y <- sum(y)
midpoints <- barplot(height = y, log = "y", ylim=c(5e1,5e6))
text(midpoints, y, sprintf("%.2f%%", y / sum_Y * 100), pos = 3)
dev.off()

R довольно требователен к тому, что он примет в качестве пределов для своих шкал регистрации.

enter image description here

1 голос
/ 24 января 2012

Другой вариант (на основе настройки @Dwin ylab) - использовать пакет plotrix.Если вы хотите больше играть с метками шкалы логов, отметьте опции height.at и height.lab в barp:

require(plotrix)
png(filename = "plot.png")
x <- c("A", "B")
y <- c(2e6 + 10, 400)
sum_Y <- sum(y)
midpoints <- barp(height = y, ylog = T, ylim=c(1,5e6))
text(y, sprintf("%.2f%%", y / sum_Y * 100), pos = 3)
dev.off()

enter image description here

1 голос
/ 24 января 2012

Вы можете сделать это за ggplot2:

library(ggplot2)
qplot(x,y,geom="bar",log="y") + geom_text(aes(y=y*1.5, label=sprintf("%.2f%%", y / sum_Y * 100)))

enter image description here

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