【问题标题】:ggplot2: how to fix a "squashed" y-axis of categorical variables?ggplot2:如何修复分类变量的“压扁”y轴?
【发布时间】:2017-07-14 20:43:42
【问题描述】:

我正在尝试增加此条形图中 y 轴上标签的间距:

library(data.table)    
ggplot(data, aes(y=values, x=categories)) + 
             geom_bar(stats="identity") +coord_flip()

问题当然是有大约 1500 个 y 轴分类标签。目前,这些都被挤在一起,无法从数据中看到任何趋势。

如何增加这些 y 轴标签之间的间距?我可以让情节垂直变大吗?

当然可以减小文本大小或减小条的宽度,但这只能在一定程度上起作用...

我用?discrete_scale尝试了以下解决方案:

ggplot(data, aes(y=values, x=categories))
           +geom_bar(stats="identity") +coord_flip() + scale_x_discrete(expand = c(0,0.01))

但是,摆弄expand 似乎并没有真正在这些标签之间创建空间。

【问题讨论】:

    标签: r ggplot2 data.table axes


    【解决方案1】:

    这里没有真正的技巧答案。如果您有一个 8 英寸高的图像和 1500 行文本,那么文本要么会严重重叠,要么会很小。无论哪种方式,它都将不可读。一种选择是关闭 y 标签。 theme(axis.ticks.y = element_blank(), axis.text.y = element_blank())。请注意,您可能需要将它们更改为 axis.ticks.xaxis.text.x,具体取决于 coord_flip。另一种选择是对数据集进行采样。无需绘制所有内容,只需绘制随机选择的 100 行。 ggplot(data[sample(dim(data)[1], 100)], aes(....

    如果你真的想要每个标签和每一行数据,第三种选择就是制作一个非常高的图像。

    pdf(file = "image.pdf", width = 8, height = 120)
    g <- ggplot(data, aes(y = values, x = categories)) + 
      geom_bar(stats="identity") + 
      coord_flip()
    print(g)
    dev.off()
    

    【讨论】:

    • 我明白了。我想这样做的唯一方法是增加情节的大小。感谢您的澄清!感谢您的帮助。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多