马赛克图:空单元格和重叠标签

时间:2014-09-26 10:23:15

标签: r

我在R中使用vcd库以执行2个分类变量的镶嵌图,每个变量具有多个级别。我不得不自定义函数调用“马赛克”以解决我的重叠标签问题。

但是,关于此函数镶嵌,我有两个问题:

  1. 为什么在简单调用完成后,不会自动完成长级名称的正确换行?通过查看各种vcd教程,它看起来默认应该处理该函数。
  2. 为什么vcd正在绘制空单元格?例如,在我的dataframe study_filt中,我没有观察到homosex变量设置为“Other”。可以删除吗?
  3. >

    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)))
    

1 个答案:

答案 0 :(得分:0)

  1. 我不认为labeling_border支持自动换行符,只需将轮换和缩写作为长标签的标准策略。

  2. mosaic()即使出现零也显示所有levels(study_filt$homosex)。在某些情况下,这可能是重要的信息。在您的情况下,最简单的方法是再次调用factor()来降低因子级别:study_filt$homosex <- factor(study_filt$homosex)