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.x
和 axis.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()
我正在尝试增加此条形图中 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.x
和 axis.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()