126

y 轴标题与轴文本过于接近。

ggplot(mpg, aes(cty, hwy)) + geom_point()

ggplot 输出

我尝试过更改许多参数的值,theme()但似乎没有任何帮助。

4

3 回答 3

203

ggplot2 2.0.0您可以使用margin =参数element_text()来更改轴标题和数字之间的距离。设置元素的marginon top、right、bottom 和 eftl侧的值。

ggplot(mpg, aes(cty, hwy)) + geom_point()+
  theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0)))

margin也可用于其他element_text元素(请参阅?theme),例如axis.text.xaxis.text.ytitle.

添加

为了在轴具有不同位置时设置轴标题的边距(例如,使用scale_x_...(position = "top"),您将需要不同的主题设置 - 例如axis.title.x.top。请参阅https://github.com/tidyverse/ggplot2/issues/4343

于 2013-01-23T18:57:16.787 回答
123

基于此论坛帖子:https ://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU

听起来最简单的方法是在 x 轴之前和 y 轴标签之后添加换行符 (\n)。似乎比上面发布的解决方案容易得多(尽管更笨)。

ggplot(mpg, aes(cty, hwy)) + 
    geom_point() + 
    xlab("\nYour_x_Label") + ylab("Your_y_Label\n")

希望有帮助!

于 2014-11-07T09:42:26.507 回答
0

出于某种原因,Didzis Elferts 建议的保证金论点对我不起作用。因此,我使用了一种不同的技巧,它比添加空行更灵活,但需要放弃轴刻度。

myplot + theme(axis.ticks.x = element_blank(), axis.ticks.length.x = unit(3.25, "cm")

我想,可以手动添加刻度线geom_segment。另一种可能性可能是 [ggalt::annotation_ticks][1],但我也没有费心尝试(注意当前版本的 CRAN(0.4)上的 ggalt 不支持此功能,github(0.6)上的那个)。

于 2021-02-28T10:54:31.590 回答