ggplot2:如何修复分类变量的 "squashed" y 轴?

ggplot2: how to fix a "squashed" y-axis of categorical variables?

我正在尝试增加此条形图中 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 似乎并没有在这些标签之间实际创建 space。

这里没有真正的技巧答案。如果您有一个 8 英寸高的图像和 1500 行文本,那么文本要么会严重重叠,要么会很小。无论哪种方式,它都将不可读。一种选择是只关闭 y 标签。 theme(axis.ticks.y = element_blank(), axis.text.y = element_blank())。请注意,您可能需要根据 coord_flip 将它们更改为 axis.ticks.xaxis.text.x。另一种选择是对数据集进行采样。与其绘制所有内容,不如绘制随机选择的 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()