2013-12-19 55 views
7

这应该是一个简单的问题......我只是试图从R中的矢量制作barplot,但希望将值显示在对数刻度上,并带有y轴刻度标记和标签。我可以使普通的barplot很好,但是当我尝试使用日志或标签时,事情就会向南。如何制作具有日志y轴比例的R barplot?

这里是我当前的代码:

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) 

有人可以帮我在这里吗?另外,标签也会很好。谢谢!

+0

我认为你正在寻找'barplot(样本数=“Y”)' – Jota

+0

谢谢你们,这是一个好 – jake9115

回答

10

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

所以,你想要的是

barplot(samples, log="y") 

我不能帮你刻度标记和标签,我很害怕,我抛弃了基础图形ggplot年前,再也没有回头。

+0

感谢您的帮助和解释。这工作,我也会研究ggplot。 – jake9115

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)