2013-12-19 77 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)