我在R中使用vcd库以执行2个分类变量的镶嵌图,每个变量具有多个级别。我不得不自定义函数调用“马赛克”以解决我的重叠标签问题。
但是,关于此函数镶嵌,我有两个问题:
>
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 :(得分:0)
我不认为labeling_border
支持自动换行符,只需将轮换和缩写作为长标签的标准策略。
mosaic()
即使出现零也显示所有levels(study_filt$homosex)
。在某些情况下,这可能是重要的信息。在您的情况下,最简单的方法是再次调用factor()
来降低因子级别:study_filt$homosex <- factor(study_filt$homosex)