2014-09-26 67 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)