2014-04-06 45 views
2

這是我注意到的事情,就像我正要將直方圖放在我的論文中一樣。我注意到頻率沒有反映出圖中顯示的正確計數。爲了仔細檢查,我在Excel中嘗試了這一點,並證明使用ggplot2在R中顯示的頻率確實不正確。我注意到在我的語法中,我已經應用了xlim函數。我爲了看到結果而刪除了它,然後神奇地ggplot2生成了正確的直方圖!使用ggplot2直方圖的錯誤頻率

這是我使用的代碼:

ggplot(data, aes(x = variable))+ 
     geom_histogram(binwidth = 1) + 
     xlim(0, 40) 

enter image description here

所產生正確的直方圖圖中的一個是這樣的:

hist(data$variable, breaks = seq(0, 40, 1), ylim = c(0,700)) 

enter image description here

有人可以幫我嗎?我花了很多時間試圖讓這個工作,但無濟於事。任何幫助將不勝感激。

# example data 
variable <- c(1L, 1L, 1L, 3L, 4L, 1L, 2L, 1L, 2L, 0L, 1L, 2L, 1L, 1L, 0L, 
3L, 1L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 1L, 0L, 5L, 0L, 0L, 2L, 1L, 
1L, 2L, 1L, 3L, 2L, 5L, 4L, 3L, 2L, 3L, 0L, 1L, 1L, 1L, 1L, 2L, 
0L, 2L, 1L, 3L, 1L, 4L, 2L, 6L, 2L, 1L, 6L, 5L, 5L, 1L, 1L, 0L, 
2L, 1L, 1L, 0L, 0L, 1L, 2L, 1L, 1L, 5L, 2L, 1L, 0L, 3L, 2L, 2L, 
4L, 6L, 3L, 2L, 1L, 6L, 1L, 4L, 2L, 1L, 2L, 1L, 1L, 1L, 0L, 1L, 
1L, 0L, 2L, 3L, 1L, 3L, 2L, 2L, 1L, 1L, 2L, 13L, 3L, 2L, 5L, 
5L, 1L, 3L, 0L, 2L, 1L, 2L, 1L, 0L, 10L, 2L, 0L, 1L, 2L, 2L, 
0L, 1L, 4L, 0L, 2L, 0L, 0L, 1L, 0L, 1L, 13L, 15L, 2L, 4L, 4L, 
12L, 7L, 4L, 4L, 0L, 0L, 1L, 0L, 1L, 2L, 6L, 3L, 0L, 2L, 2L, 
0L, 1L, 5L, 0L, 3L, 3L, 4L, 1L, 1L, 3L, 20L, 2L, 1L, 0L, 4L, 
4L, 5L, 6L, 9L, 2L, 4L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 0L, 1L, 1L, 
1L, 2L, 0L, 3L, 2L, 1L, 2L, 1L, 2L, 4L, 18L, 16L, 3L, 3L, 1L, 
3L, 1L, 7L, 13L, 2L, 3L, 2L, 4L, 2L, 2L, 1L, 0L, 0L, 0L, 0L, 
1L, 2L, 1L, 1L, 1L, 1L, 3L, 2L, 2L, 2L, 4L, 3L, 4L, 4L, 5L, 2L, 
1L, 1L, 6L, 4L, 0L, 3L, 3L, 1L, 4L, 0L, 0L, 2L, 2L, 1L, 0L, 1L, 
1L, 0L, 0L, 1L, 2L, 4L, 1L, 2L, 1L, 0L, 0L, 5L, 2L, 10L, 4L, 
1L, 2L, 3L, 2L, 2L, 1L, 2L, 0L, 4L, 2L, 1L, 0L, 0L, 3L, 1L, 3L, 
1L, 1L, 0L, 0L, 0L, 1L, 4L, 2L, 2L, 3L, 0L, 4L, 1L, 34L, 20L, 
1L, 3L, 3L, 1L, 7L, 5L, 1L, 3L, 5L, 2L, 1L, 1L, 3L, 0L, 1L, 4L, 
1L, 2L, 2L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 5L, 4L, 5L, 
9L, 9L, 3L, 5L, 1L, 2L, 1L, 2L, 1L, 0L, 3L, 2L, 1L, 0L, 2L, 1L, 
2L, 0L, 1L, 2L, 1L, 1L, 1L, 2L, 0L, 1L, 5L, 9L, 8L, 0L, 5L, 2L, 
3L, 1L, 0L, 0L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
2L, 2L, 1L, 2L, 0L, 1L, 1L, 1L, 7L, 0L, 1L, 1L, 1L, 1L, 2L, 2L, 
3L, 2L, 0L, 1L, 5L, 6L, 3L, 6L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 1L, 1L, 1L, 0L, 1L, 1L, 2L, 0L, 1L, 0L, 0L, 1L, 
3L, 2L, 3L, 3L, 3L, 4L, 6L, 7L, 6L, 3L, 1L, 0L, 1L, 0L, 0L, 2L, 
1L, 1L, 1L, 2L, 1L, 3L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 2L, 2L, 
0L, 0L, 1L, 2L, 0L, 3L, 3L, 0L, 3L, 1L, 1L, 2L, 3L, 0L, 0L, 0L, 
0L, 1L, 1L, 3L, 2L, 0L, 4L, 3L, 0L, 0L, 1L, 1L, 1L, 2L, 1L, 1L, 
0L, 1L, 2L, 2L, 1L, 2L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 1L, 
1L, 1L, 0L, 0L, 3L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 2L, 3L, 1L, 0L, 
1L, 4L, 2L, 1L, 0L, 2L, 2L, 1L, 1L, 2L, 3L, 2L, 2L, 4L, 1L, 2L, 
0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 2L, 1L, 1L, 
1L, 1L, 3L, 1L, 1L, 0L, 3L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 2L, 1L, 
1L, 1L, 0L, 0L, 5L, 8L, 6L, 4L, 2L, 1L, 1L, 0L, 1L, 0L, 2L, 1L, 
1L, 1L, 1L, 0L, 1L, 0L, 2L, 0L, 1L, 0L, 3L, 3L, 1L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 0L, 1L, 2L, 3L, 3L, 2L, 3L, 2L, 1L, 
1L, 0L, 0L, 1L, 0L, 0L, 2L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 2L, 0L, 
2L, 0L, 1L, 2L, 2L, 0L, 0L, 0L, 1L, 0L, 0L, 4L, 0L, 1L, 0L, 0L, 
2L, 1L, 0L, 4L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
1L, 2L, 1L, 0L, 3L, 5L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 2L, 1L, 0L, 0L, 3L, 
2L, 0L, 1L, 0L, 2L, 2L, 3L, 2L, 1L, 0L, 0L, 2L, 0L, 2L, 1L, 1L, 
0L, 0L, 0L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 4L, 
0L, 1L, 0L, 0L, 2L, 2L, 0L, 2L, 0L, 4L, 3L, 3L, 4L, 1L, 2L, 1L, 
1L, 1L, 1L, 2L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 
2L, 1L, 1L, 0L, 1L, 3L, 3L, 2L, 1L, 1L, 1L, 4L, 2L, 2L, 3L, 2L, 
1L, 3L, 1L, 4L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 2L, 0L, 1L, 1L, 1L, 
1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 4L, 3L, 3L, 1L, 3L, 3L, 3L, 
2L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 5L, 5L, 2L, 4L, 3L, 7L, 5L, 3L, 
0L, 1L, 2L, 2L, 1L, 3L, 2L, 0L, 0L, 0L, 1L, 0L, 2L, 1L, 0L, 1L, 
1L, 1L, 0L, 1L, 0L, 0L, 1L, 2L, 7L, 11L, 5L, 8L, 15L, 6L, 6L, 
0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 4L, 1L, 0L, 1L, 0L, 0L, 0L, 
1L, 1L, 1L, 1L, 1L, 0L, 2L, 14L, 19L, 8L, 9L, 3L, 4L, 0L, 0L, 
0L, 1L, 1L, 0L, 0L, 2L, 1L, 1L, 2L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 
2L, 1L, 1L, 7L, 7L, 3L, 4L, 6L, 2L, 1L, 2L, 1L, 1L, 1L, 0L, 1L, 
0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 2L, 0L, 0L, 1L, 1L, 
0L, 2L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 5L, 2L, 2L, 
1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 
2L, 0L, 0L, 1L, 1L, 0L, 1L, 2L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 2L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 2L, 1L, 
2L, 1L, 0L, 1L, 0L, 2L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 2L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
2L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 
1L, 0L, 1L, 0L, 1L, 1L, 11L, 1L, 0L, 0L, 1L, 1L, 3L, 4L, 0L, 
0L, 0L, 1L, 6L) 
data <- data.frame(variable) 
+0

您可以張貼在您所使用的可變信息,例如輸出'summary(data $ variable'? – adibender

+0

Min。1st Qu。Median Mean 3rd Qu。Max。 0.00 0.00 1.00 1.69 2.00 34.00 我仍在努力解決這個問題!看起來這與' binwidth'。直方圖在使用hist()函數時正確地繪製...... :( – VGu

+0

......其他,在第一次調用中,你在第二個u中使用'binwidth = 1'不要......這是這樣或者只是一個錯誤? – adibender

回答

3

好的,我明白了,區別在於bin的具體定義,即對第一個bin使用[0,1]還是[0,1]。嘗試

ggplot(data, aes(x = variable)) + 
    geom_histogram(breaks = seq(0,40,by = 1), right = TRUE) 

,或者如果你不使用顯式的突破,你必須additionaly指定產地,無論是xlim像你一樣,或者

ggplot(data, aes(x = variable)) + 
    geom_histogram(binwidth = 1, right = TRUE, origin = 0) 
+0

這是有效的!非常感謝你......非常感謝! – VGu