增加y轴上文本和标题之间的距离

Ern*_*t A 99 layout plot r ggplot2

y轴标题显得太靠近轴文本.

ggplot(mpg, aes(cty, hwy)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

ggplot输出

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

Did*_*rts 150

ggplot2 2.0.0您可以使用margin =的参数element_text()来改变轴标题和数字之间的距离.设定的值margint运算,r飞行,bottom,和l该元件的EFT侧.

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

margin也可以用于其它element_text元素(参见?theme),如axis.text.x,axis.text.ytitle.

  • @Anonymous如果你使用`theme_bw()`那么`theme_bw()`应该在`theme()`函数之前使用,因为在预定的主题中有轴标题的allready参数. (3认同)
  • 该方法似乎不适用于“ facet_grid”,而亚当·B(Adam B)建议的答案可以(即使用\ n换行) (2认同)

Ada*_*m B 82

基于此论坛帖子: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")
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!

  • 我通常使用这种方法,它更快,并且不需要为ggplot添加另一个选项,除非我需要一些特定的调整. (4认同)

Oma*_*sow 10

一种比添加边距提供更细粒度控制\n但又不那么麻烦的解决方案是vjusttheme函数中使用。

为了调整 y 轴或 x 轴上的位置以增加空间,这通常需要使用(y 轴)的正值或(x 轴)vjust的负值,如 中所示。请参阅下面的完整示例。vjusttheme(axis.title.y = element_text(vjust = 2))

# load patchwork to show plots side-by-side
library(patchwork)
library(ggplot2)

# Plot A: just for comparison, moving titles *inward*
p1 <- ggplot(mpg, aes(cty, hwy)) + 
  geom_point() + 
  theme_gray() +
  theme(
    axis.title.y = element_text(vjust = -3),
    axis.title.x = element_text(vjust = +3)
  ) 

# Plot B: what we want, moving titles *outward*
p2 <- ggplot(mpg, aes(cty, hwy)) + 
  geom_point() + 
  theme_gray() +
  theme(
    axis.title.y = element_text(vjust = +3),
    axis.title.x = element_text(vjust = -0.75)
  ) 

# show plots side-by-side with patchwork package
p1 + p2 +
  plot_annotation(tag_levels = "A")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述