2016-04-14 23 views
1

我使用histogram來自格子包來繪製兩個直方圖調節變量的兩個選項:Male或Female。使用格子包,輸出圖的條件直方圖不正確

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender) 

Output of code: two histograms, minutes doing housework by gender

但是,當我真正的數據看,這些直方圖是不正確的。通過繪製:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000) & (raw$Gender == "Female")] 

和:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000) & (raw$Gender == "Male")] 

I get two histograms again, but they look very different

有沒有人對爲什麼這些產出不匹配的見解?我有一堆更多的二進制類型的面板來進行繪圖,並且不得不單獨做它們,這實際上違背了使用晶格包的目的!

我很抱歉,如果這隱瞞了一個簡單的概念的根本誤解,我仍然是R的初學者!非常感謝您的幫助。

+0

詳細內容請參閱我如何問一個很好的問題?(http://stackoverflow.com/help/how-to-ask)。您至少應提供一些示例數據以使代碼可重現。 – fdetsch

+1

注意:繪製數據子集時,** 1)**子集數據參數中的data.frame或**​​ 2)**使用「子集」參數。公式中的子集可能不是解決這個問題的方法。 – BenBarnes

+0

謝謝Ben;是否有理由使用數據參數,而不是美學,並保存自己一直輸入$ raw?只是好奇! – jwint

回答

0

原來,問題是圍繞基礎上,排除數據的不匹配使用的支架上。相反的:

histogram(~ raw$Housework_Tot_Min [(raw$Housework_Tot_Min != 0) & 
(raw$Housework_Tot_Min < 1000)] | raw$Gender) 

它應該閱讀:

histogram(~ Housework_Tot_Min [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)] | 
     Gender [(Housework_Tot_Min != 0) & (Housework_Tot_Min < 1000)], data = raw, 
     main = "Time Observed Housework by Gender", 
     xlab = "Minutes spent", 
     breaks = seq(from = 0, to = 400, by = 20)) 

注意,排除現在應用到了家務勞動時間和性別變量,消除了數據的不匹配。

正確的情節已被粘貼在下面。再次感謝所有人的指導。

Updated Histogram

2

該問題與panel.args.common(即所有面板函數共有的參數,請參見?trellis.object)中的不同值有關。這裏有一些示例代碼來闡明我的觀點。

library(lattice) 

## paneled plot 
hist1 <- histogram(~ Sepal.Width | Species, data = iris) 
hist1$panel.args.common 

# $breaks 
# [1] 1.904 2.228 2.552 2.876 3.200 3.524 3.848 4.172 4.496 
# 
# $type 
# [1] "percent" 
# 
# $equal.widths 
# [1] TRUE 
# 
# $nint 
# [1] 8 

## single plot  
hist2 <- histogram(~ Sepal.Width, data = iris[iris$Species == "setosa", ]) 
hist2$panel.args.common 

# $breaks 
# [1] 2.216 2.540 2.864 3.188 3.512 3.836 4.160 4.484 
# 
# $type 
# [1] "percent" 
# 
# $equal.widths 
# [1] TRUE 
# 
# $nint 
# [1] 7 

nint(數柱狀圖箱中,見?histogram)和breaks(二進制位中的斷點)跨所有目標面板計算的,並且因此hist1hist2之間變化。如果你希望這些參數是相同的,這樣這兩個圖看起來很相似,那麼你只需在創建兩個圖之後運行下面的代碼行。

hist2$panel.args.common <- hist1$panel.args.common 
## or vice versa, depending on the number of bins and breakpoints to use 

library(gridExtra) 
grid.arrange(hist1, hist2, ncol = 2) 

histogram

+0

感謝您的幫助。但是,問題不在於軸和箱寬度不同。問題是,在單一性別情節中,男性數據最大值爲c。 150分鐘。但是,在分割面板中,分配完全不同(最大值也不同)。根據代碼,爲什麼兩種類型的圖不會輸出相同的值?再次感謝! – jwint

+0

啊,現在我明白你的意思了。您應該將此問題報告給[R-help郵件列表](https://www.r-project.org/mail.html),因爲它可能需要開發者網站的審覈。 – fdetsch