【问题标题】:R vcd::mosaic overlapping labelsR vcd::mosaic 重叠标签
【发布时间】: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= 2mosaicplot 配合得很好。就像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


【解决方案1】:

终于找到了!关键搜索文档:

?labelings
?labeling_border

为了旋转标签

mosaic(y ~ x, 
       data= a, 
       labeling= labeling_border(rot_labels = c(90,0,0,0), 
                                 just_labels = c("left", 
                                                 "center", 
                                                 "center", 
                                                 "center")))

【讨论】:

    【解决方案2】:

    试试这个:

    + theme(axis.text.x=element_text(angle=-25, hjust= .1))
    

    它会将标签旋转 25 度(您可以复制和粘贴)

    【讨论】:

    • 我不明白 -- 剪切并粘贴到哪里?
    • 此评论与 ggplot 生态系统相关,但 vcd 使用网格图形(因此此信息不适用于 vcd)。
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2013-11-03
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2014-09-18
    相关资源
    最近更新 更多