2017-07-14 105 views
-1

我试图增加在此barplot y轴的标签的间距:ggplot2:如何修复分类变量的“压扁”y轴?

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

enter image description here

当然,问题是,有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似乎并没有真正在这些标签之间创建空间。

回答

3

这里没有真正的技巧答案。如果你有一个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() 
+0

我明白了。我想唯一的方法就是增加剧情的大小。谢谢澄清!我很感激帮助。 – ShanZhengYang