【发布时间】:2016-05-25 19:07:25
【问题描述】:
我正在使用vcd::mosaic 生成马赛克图。但是给我的因素的文字很长(删掉它们不是一种选择,而且在很多情况下,引入\n 似乎令人生畏),所以文字中有重叠,我一直没能强制标签垂直于轴。
这就是我正在尝试的:
a <- data.frame(x=sample(LETTERS[1:4],16,replace = TRUE),
y=rep(paste("very long label here at number", 1:4, paste=" "), 4))
mosaic(y ~ x, data= a, las= 2)
我也尝试过par(las= 2) 和par(las= 3),但它们都无法强制它们垂直对齐(不过las= 2 与mosaicplot 配合得很好。就像vcd::mosaic 覆盖las 一样作为给定参数或par 中的默认设置。我也玩过par(mar),但标签足够长,可以欺骗该解决方法。
我可以做些什么来获得可读的标签?
########## 编辑添加:##########
我也试过了,没用:
mosaic(y ~ x, data= a, labeling_list= list(gp_text= gpar(las= 2)))
和
mosaic(y ~ x, data= a, labeling_list= list(rot_labels = c(0,90,0,0)))
# Actually placed the "90" in the 4 positions
mosaic(y ~ x, data= a, labeling_list= list(rot_varnames = c(0,90,0,0)))
【问题讨论】:
-
如果符合您的要求,您可以尝试使用
rep(paste("very long label\n here at number\n", 1:4, paste=" "), 4)。 -
Pascal,感谢您的评论,但正如我在问题中所述,数据比可重现的示例要多得多(而且复杂得多),因此输入
\n将非常麻烦。我想知道如何旋转标签:'( -
我不认为旋转标签是一个好的解决方案。
-
@Pascal 马赛克图中的一些标签区域非常小,这意味着它们的侧面非常狭窄。如果我将每个字符串拆分为 5 个字符并不重要,它们将是一个在另一个之上。我知道你不喜欢旋转标签,但你能告诉我怎么做吗?谢谢!
-
对不起,你误解了我的意思。
标签: r plot mosaic-plot vcd