我想把标题放在这样的情节中
ggplot(data = economics, aes(x = date, y = unemploy)) +
geom_line() +
ggtitle("Unemployment in USA between 1967 and 2007") +
xlab("") +
ylab("Unemployed [thousands]")

第一次尝试
ggplot(data = economics, aes(x = date, y = unemploy)) + geom_line() +
ggtitle("Unemployment in USA for some years") +
xlab("") +
ylab("Unemployed [thousands]") +
theme(plot.title = element_text(hjust = -0.45, vjust=2.12)))

太成功了!但是等等..。还有更多。现在我想把标题改成别的东西。
ggplot(data = economics, aes(x = date, y = unemploy)) +
geom_line() +
ggtitle("Unemployment in USA between 1967 and 2007") +
xlab("") +
ylab("Unemployed [thousands]") +
theme(plot.title = element_text(hjust = -0.45, vjust=2.12))

所以现在我需要调整一下.:(
问题
如何使标题一次又一次地对齐(y轴标签左边的几个像素),而不影响the值?或者,and与字符串长度之间的关系是什么?
我试着按照这个问题手动注释,但是之后我只得到了标题,没有其他原因--还有一个错误。
谢谢!
发布于 2014-08-20 09:43:15
在有人想出更好的解决方案之前,一种方法是
library(ggplot2)
library(grid)
library(gridExtra)
p <- ggplot(data = economics, aes(x = date, y = unemploy)) +
geom_line() +
labs(x = NULL, y = "Unemployed [thousands]", title = NULL)
title.grob <- textGrob(
label = "Unemployment in USA for some years",
x = unit(0, "lines"),
y = unit(0, "lines"),
hjust = 0, vjust = 0,
gp = gpar(fontsize = 16))
p1 <- arrangeGrob(p, top = title.grob)
grid.draw(p1)

发布于 2017-12-03 17:48:42
您可以手动调整ggplot输出的布局。首先,我们建立了基本的情节:
library(ggplot2)
p <- ggplot(data = economics, aes(x = date, y = unemploy)) +
geom_line() +
labs(title = "Unemployment in USA between 1967 and 2007",
x = NULL, y = "Unemployed [thousands]")现在,我们可以将ggplot对象转换为gtable对象,并检查绘图中元素的布局。注意,title位于网格的第四列中,与主面板的列相同。
g <- ggplotGrob(p)
g$layout
# t l b r z clip name
# 17 1 1 10 7 0 on background
# 1 5 3 5 3 5 off spacer
# 2 6 3 6 3 7 off axis-l
# 3 7 3 7 3 3 off spacer
# 4 5 4 5 4 6 off axis-t
# 5 6 4 6 4 1 on panel
# 6 7 4 7 4 9 off axis-b
# 7 5 5 5 5 4 off spacer
# 8 6 5 6 5 8 off axis-r
# 9 7 5 7 5 2 off spacer
# 10 4 4 4 4 10 off xlab-t
# 11 8 4 8 4 11 off xlab-b
# 12 6 2 6 2 12 off ylab-l
# 13 6 6 6 6 13 off ylab-r
# 14 3 4 3 4 14 off subtitle
# 15 2 4 2 4 15 off title
# 16 9 4 9 4 16 off caption要使title与图的左侧对齐,我们可以将l值更改为1。
g$layout$l[g$layout$name == "title"] <- 1绘制修改后的网格:
grid::grid.draw(g)结果:

发布于 2021-05-07 15:17:21
由于ggplot 3.3.0的发布,您还可以使用plot.title.position = "plot"将标题和plot.caption.position = "plot副标题放置在整个绘图的左侧。
ggplot(data = economics, aes(x = date, y = unemploy)) +
geom_line() +
ggtitle("Unemployment in USA between 1967 and 2007") +
xlab("") +
ylab("Unemployed [thousands]") +
theme(plot.title.position = "plot")

https://stackoverflow.com/questions/25401111
复制相似问题