我正在做一个ggplot。x轴是因子,标签很长。
我不能缩短标签,它们要尽可能的短。
我有兴趣使标签垂直偏移。我的偏好是使每个奇数标签的高度都为0,而每个偶数标签的高度都离x轴2个单位。
我在这里查看了ggplot-hopeful-help,但是在解释发生的事情时确实遇到了麻烦,因此无法对此做一个有用的版本。
有任何想法吗??
(下面的示例代码...我不太擅长在此处格式化代码,似乎...很抱歉。)
library("ggplot2");
stack <- data.frame(value =rnorm(n = 1000, sd = 2, mean=34)); stack$fact <- as.factor(rep(1:5, each=1000/5));
ggplot(stack, aes(x=fact, y=value)) + geom_boxplot(aes(fill=fact))+ scale_x_discrete(breaks=c("1", "2", "3", "4", "5"), labels=c("hi","don't suggest I shorten the text","I need long labels", "This is a long factor label","This label is very long"))
理解与否,它似乎工作得很好。调用问题中的情节your_plot
:
your_plot + theme(axis.text.x = element_text(vjust = grid::unit(c(-2, 0, 2), "points")))
在中指定首选项theme()
是调整ggplot陷阱的方法。axis.text.x
仅修改x轴文字,该文字是使用设置的首选项创建的element_text()
。您可以在中指定字体大小,字体系列,旋转角度等element_text()
。vjust
代表“垂直对齐”,因此将vjust
-2、0和2设置为三个值会将这些值应用于连续的x轴标签。(显然,负面因素在上升,这让我感到惊讶。)
使用grid::unit()
允许我们指定垂直移动文本的单位(在这种情况下为点)。查看可以?grid::units
发现您可以使用英寸,厘米或其他几个单位。
唯一的问题是与x轴标题重叠。我认为解决此问题的最简单方法是"\n"
在其之前添加几个换行符:
your_plot +
theme(axis.text.x = element_text(vjust = grid::unit(c(-2, 0, 2), "points"))) +
labs(x = "\n\nfact")
另一个解决方案是旋转文本:
your_plot + theme(axis.text.x = element_text(angle = -90, hjust = 0, vjust = 0))
有关更多阅读,ggplot2 theming上有一个完整的小插图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句