Y轴标题与轴文本太近。
ggplot(mpg, aes(cty, hwy)) + geom_point()
我试过用theme()更改许多参数的值,但似乎都没有帮助。
theme()
llmtgqce1#
在ggplot2 2.0.0中,您可以使用element_text()的margin =参数来更改轴标题和数字之间的距离。设置元素的t上、r下、b下和l左的x1m3 n1,值。
ggplot2 2.0.0
element_text()
margin =
t
r
b
l
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)。
scale_x_...(position = "top")
axis.title.x.top
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")
qij5mzcb3#
有一种解决方案可以提供比\n更细粒度的控制,但比添加边距更简单,那就是在theme函数中使用vjust。为了调整y轴或(x轴)上的位置以增加空间,这通常需要为vjust(y轴)使用 * 正值 * 或为vjust(x轴)使用负值,如theme(axis.title.y = element_text(vjust = 2))。请参阅下面完整的示例。
\n
theme
vjust
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")
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)上的支持)。
geom_segment
[ggalt::annotation_ticks][1]
4条答案
按热度按时间llmtgqce1#
在
ggplot2 2.0.0
中,您可以使用element_text()
的margin =
参数来更改轴标题和数字之间的距离。设置元素的t
上、r
下、b
下和l
左的x1m3 n1,值。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)。rsl1atfo2#
基于此论坛帖子:https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU
听起来最简单的方法就是在x轴之前和y轴标签之后添加一个换行符(\n),比上面的解决方案简单得多(虽然更笨)。
qij5mzcb3#
有一种解决方案可以提供比
\n
更细粒度的控制,但比添加边距更简单,那就是在theme
函数中使用vjust
。为了调整y轴或(x轴)上的位置以增加空间,这通常需要为
vjust
(y轴)使用 * 正值 * 或为vjust
(x轴)使用负值,如theme(axis.title.y = element_text(vjust = 2))
。请参阅下面完整的示例。muk1a3rh4#
出于某种原因,Didzis Elferts提出的边距论点对我不起作用,所以我使用了一种不同的方法,它比添加空行更灵活,但需要放弃轴刻度。
我想,你可以用
geom_segment
手动添加刻度线,另一种可能是[ggalt::annotation_ticks][1]
,但我也没有尝试(注意CRAN(0.4)上的galt当前版本不支持这个功能,github(0.6)上的支持)。