【发布时间】:2018-01-30 04:27:22
【问题描述】:
这是我目前拥有的示例:
x <- head(mtcars)
x$rn <- rownames(x)
x$rn[5] <- 'Hornet\nSportabout'
library(ggplot2)
ggplot(x, aes(x = rn, y = mpg)) + geom_point() +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
ggsave('test.png', width = 3, height = 3)
如您所见,'Hornet\nSportabout' 离下一个太近了,我想将它向左移动一点。预期的 x 轴文本如下所示:
我认为我应该设置vjust = 0.5,但这也会将轴文本向下移动。我还尝试了vjust 和hjust 的几种组合,但仍然无法获得所需的输出。有没有办法让 axis.text 与 ggplot2 对齐,如第二个图(使用 libreoffice draw 手动创建)所示?
【问题讨论】:
-
我认为这不可能。您向左/向右或向上/向下移动一条线(使用 hjust 和 vjust)的任何数量都会将它们全部移动相同的数量,因此差距仍然太小。出于这个原因,我真的强烈建议我的同事不要使用除 0 或 90 之外的任何角度;太拥挤了。
-
可能您可以将其更改为“Hornet\nSportabout\n”以尝试将狭窄的间隙分开到两侧,但这是黑客行为,当您仔细观察时,它永远不会均匀分布。跨度>
-
我认为如果角度为 90 则很难阅读。
-
如果优先考虑易于阅读,我通常会将文本标签放在垂直轴上(在必要时使用
coord_flip,对于某些几何图形)。否则,即使是最好的多线 x 轴标签也总是会出现丑陋的情况。例如。标签太长/包含太多换行符,字体大小相对于绘图大小太大,等等。 -
@Z.Lin,感谢您的建议。问题是y轴标签也很长而且太多(~40)。