如何制作具有log y轴刻度的R条形图?

时间:2013-12-19 14:39:13

标签: r label axis bar-chart

这应该是一个简单的问题......我只是想从R中的矢量绘制一个条形图,但希望这些值以对数刻度显示,带有y轴刻度标记和标记。我可以使正常的条形图很好,但是当我尝试使用日志或标签时,事情就会向南移动。

这是我目前的代码:

samples <- c(10,2,5,1,2,2,10,20,150,23,250,2,1,500)
barplot(samples)

好的,这很有效。然后我尝试使用barplot手册中定义的log=""函数,它永远不会起作用。以下是我尝试过的一些愚蠢的尝试:

barplot(samples, log="yes")
barplot(samples, log="TRUE")
barplot(log=samples)

有人可以帮帮我吗?此外,标签也很棒。谢谢!

2 个答案:

答案 0 :(得分:11)

log参数需要一个或两个字符的字符串,指定哪些轴应该是对数的。不,barplot的x轴是对数的没有任何意义,但这是所有“基础”图形使用的通用机制 - 有关详细信息,请参阅?plot.default

所以你想要的是

barplot(samples, log="y")

我无法帮助你使用刻度线和标签,我担心,我在ggplot年之前扔了基础图形并且从未回头。

答案 1 :(得分:2)

这应该让您开始摆弄ggplot2

d<-data.frame(samples)
ggplot(data=d, aes(x=factor(1:length(samples)),y=samples)) + 
    geom_bar(stat="identity") +
    scale_y_log10()

scale_y_log10()功能中,您可以定义中断,标签等。同样,您可以标记x轴。例如

ggplot(data=d, aes(x=factor(1:length(samples)),y=samples)) +
    geom_bar(stat="identity") +
    scale_y_log10(breaks=c(1,5,10,50,100,500,1000),
                  labels=c(rep("label",7))) +
    scale_x_discrete(labels=samples)