我怎样才能在酒吧里放一个高大的酒吧?

时间:2012-01-24 17:37:56

标签: r plot

以下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 个答案:

答案 0 :(得分:5)

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 :(得分:1)

您可以在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

答案 2 :(得分:1)

另一个选项(基于@Dwin ylab调整)是使用plotrix包。如果您想使用对数比例标签进行更多操作,请查看height.at中的height.labbarp选项:

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