R语言 增加Y轴上文本和标题之间的距离

vhmi4jdf  于 2022-12-27  发布在  其他
关注(0)|答案(4)|浏览(562)

Y轴标题与轴文本太近。

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

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

llmtgqce

llmtgqce1#

ggplot2 2.0.0中,您可以使用element_text()margin =参数来更改轴标题和数字之间的距离。设置元素的t上、r下、b下和l左的x1m3 n1,值。

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

X1 M8 N1 X也可用于其它X1 M9 N1 X元件(参见X1 M10 N1 X),例如X1 M11 N1 X、X1 M12 N1 X和X1 M13 N1 X。

增补

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

rsl1atfo

rsl1atfo2#

基于此论坛帖子: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")
qij5mzcb

qij5mzcb3#

有一种解决方案可以提供比\n更细粒度的控制,但比添加边距更简单,那就是在theme函数中使用vjust
为了调整y轴或(x轴)上的位置以增加空间,这通常需要为vjust(y轴)使用 * 正值 * 或为vjust(x轴)使用负值,如theme(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")

muk1a3rh

muk1a3rh4#

出于某种原因,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)上的galt当前版本不支持这个功能,github(0.6)上的支持)。

相关问题