如何制作一张具有对数y轴刻度的R条形图?

11

这应该是一个简单的问题...我只是想在R中从向量制作一个条形图,但希望值以对数刻度显示,并带有y轴刻度标记和标签。我可以很好地制作普通的条形图,但是当我尝试使用log或标签时,情况变得糟糕。

这是我当前的代码:

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)

能有人帮帮我吗?另外,标注也会很棒。谢谢!


我认为你正在寻找 barplot(samples,log="y") - Jota
谢谢大家,这很好。 - jake9115
2个回答

14
log参数需要一个包含一或两个字符的字符串,用于指定应该对哪些轴进行对数变换。在条形图的x轴上使用对数变换没有任何意义,但这是所有“基本”图形通用机制的一部分 - 有关详细信息,请参见?plot.default。因此,您需要的是:
barplot(samples, log="y")

很抱歉,我无法帮助您处理刻度和标签方面的问题。多年前,我放弃了基础图形并转向ggplot,从那以后我再也没有回头。


感谢您的帮助和解释。这个方法可行,我也会研究一下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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接