2014-09-26 65 views
1

我在R中使用vcd庫來執行2個分類變量的拼接圖,每個拼接圖都有多個級別。我必須自定義函數調用「馬賽克」,以解決我的標籤重疊問題。拼接圖:空單元格和重疊標籤

不過,我有2個關於這個功能的馬賽克問題:

  1. 爲什麼長期級別名稱正確斷線時,簡單的調用完成不是自動完成,?通過查看各種vcd教程,它看起來默認情況下應該處理該功能。
  2. 爲什麼vcd繪製空單元?例如,在我的dataframe study_filt中,我沒有觀察到homosex變量設置爲「Other」。它可以被刪除嗎?

>

library(dplyr) 
library(vcd) 
library(MASS) 

load(url("http://bit.ly/dasi_gss_data")) 

study=dplyr::select(gss,year,homosex,vetyears) 
study=filter(study, year>1974) 
study=filter(study, year<1995 | year>2009) 
study=group_by(study,year) 
study_filt = filter(study,!all(is.na(homosex)) && !all(is.na(vetyears))) 
study_filt <- as.data.frame(study_filt) 

的功能鑲嵌簡單調用

vcd::mosaic(data=study_filt,~homosex+vetyears) 

定製的呼叫處理長級別名稱

vcd::mosaic(data=study_filt,~homosex+vetyears, 
     labeling=labeling_border(
     rot_labels = c(90, 0, 90, 0), 
     just_labels=c("left","left","right","right"), 
     tl_varnames = FALSE, 
     gp_labels = gpar(fontsize = 9))) 

回答

0
  1. 我不薄k labeling_border支持自動換行符,只是旋轉和縮寫作爲長標籤的標準策略。

  2. mosaic()顯示全部levels(study_filt$homosex),即使它們的出現次數爲零。在某些情況下,這可能是一個重要的信息。在你的情況下,它是最容易通過調用factor()另一次下降的因素水平:study_filt$homosex <- factor(study_filt$homosex)