2015-01-16 60 views
2

我使用geom_histogram構建R中的直方圖,我想將我的x軸縮放至155,並顯示252,並顯示一個刻度evrey 5個數字(0,5 ,10等),我用了scale_x_continuous(breaks=(0,155,5)。它工作,但直方圖不會在整個屏幕上顯示。 我使用xlim(0,155)它顯示了整個屏幕上的直方圖,但它覆蓋了我定義的滴答。如何縮放x軸並在R中添加刻度

回答

3

的問題是,xlim(0, 155)實際上是scale_x_continuous(lim = c(0, 155))的簡寫。因此,當您同時使用xlim()scale_x_continuous()時,ggplot會混淆,並且只會使用scale_x_continuous()這兩個調用中的一個。如果我這樣做,我會得到以下警告:

'x'的比例已經存在。爲'x'添加另一個比例,它將替換現有的比例。

正如您所看到的,ggplot僅使用您最後定義的比例尺。

解決方法是將極限和中斷放入scale_x_continuous()的一個調用中。以下是你可以運行,看看它是如何工作的例子:

data <- data.frame(a = rnorm(1000, mean = 100, sd = 40)) 
ggplot(data, aes(x = a)) + geom_histogram() + 
    scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155)) 

讓我補充另一個備註:該休息就現在不與箱寬,我覺得相當奇怪的吻合。所以我建議你也改變垃圾箱的寬度。以下曲線再次直方圖,但設置箱寬度爲5:

ggplot(data, aes(x = a)) + geom_histogram(binwidth = 5) + 
    scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155)) 

以下鏈接提供了大量的附加信息和如何改變軸在ggplot例子:http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/

1

break爲您的主要記號提供了一個序列列表。嘗試:

scale_x_continuous(breaks=seq(0,155,5)) 
+0

這設置刻度按照要求,但不會將x軸的上限設置爲155. – Stibu

+0

scale_x_continuous(breaks = seq(0,155,5),limits = c(0,155)) –