R语言副标题字号修改无效求助:cex.sub参数调整无作用
解决R语言mosaic图副标题字号无效&标题超出窗口的问题
看起来你用的是vcd包的mosaic()函数吧?这事儿我之前也踩过坑——基础绘图的cex.sub参数在这个函数里根本不生效,因为它是基于grid绘图系统的,不是base那套!而且标题超出窗口大概率是默认边距不够,得一起调整。
给你两个靠谱的解决方案:
方案1:用main参数的列表形式统一设置主副标题样式
直接把main设成一个列表,分别定义主标题、副标题,以及各自的字号,同时调整边距避免溢出:
library(vcd) # 假设你的table是已经准备好的列联表 mosaic(table, shade=TRUE, colorize=TRUE, main = list("你的主标题内容", sub = "你的副标题内容", gp = gpar(fontsize = 14), # 主标题字号 subgp = gpar(fontsize = 7) # 副标题字号,这里设成你想要的大小 ), # 调整绘图边距,上边留够放主标题,下边留够放副标题 margins = unit(c(6, 1, 3, 1), "lines") )
方案2:手动添加副标题(更灵活)
如果觉得上面的方式麻烦,也可以先画mosaic图,再用grid包的grid.text()手动加副标题,完全自主控制位置和大小:
library(vcd) library(grid) # 先绘制mosaic图,预留好副标题的空间 mosaic(table, shade=TRUE, colorize=TRUE, main="你的主标题内容", margins = unit(c(6, 1, 4, 1), "lines") # 下边多留空间放副标题 ) # 手动添加副标题,y参数控制垂直位置,fontsize设你要的字号 grid.text("你的副标题内容", y = unit(-1.5, "lines"), just = "center", gp = gpar(fontsize = 6))
为啥原来的方法没用?
cex.sub是base绘图系统(比如plot())的参数,但vcd的mosaic用的是grid绘图系统,根本不认这个参数!必须用grid的gpar()来指定文本大小。而标题溢出就是默认边距太小,标题没地方放,调整margins参数用unit单位留够空间就好啦。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

