ggplot2中的Plot标题

这段简单的代码(以及我今天早上的所有脚本)已经开始在ggplot2中给我一个偏离中心的标题:

Ubuntu version: 16.04


R studio version: Version 0.99.896


R version: 3.3.2


GGPLOT2 version: 2.2.0

我今天早上刚安装了上面的软件,试图修复这个问题…

dat <- data.frame(
time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
total_bill = c(14.89, 17.23)
)


# Add title, narrower bars, fill color, and change axis labels
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
geom_bar(colour="black", fill="#DD8888", width=.8, stat="identity") +
guides(fill=FALSE) +
xlab("Time of day") + ylab("Total bill") +
ggtitle("Average bill for 2 people")

enter image description here

589621 次浏览

来自ggplot 2.2.0的发布消息:“主情节标题现在向左对齐,以便更好地与副标题配合”。另请参阅?theme: "默认左对齐"中的plot.title参数。

正如@J_F指出的那样,你可以将theme(plot.title = element_text(hjust = 0.5))添加到标题的中央。

ggplot() +
ggtitle("Default in 2.2.0 is left-aligned")

enter image description here

ggplot() +
ggtitle("Use theme(plot.title = element_text(hjust = 0.5)) to center") +
theme(plot.title = element_text(hjust = 0.5))

enter image description here

Henrik的回答中所述,默认情况下,标题从ggplot 2.2.0开始左对齐。标题可以在情节中居中:

theme(plot.title = element_text(hjust = 0.5))

但是,如果您创建了许多情节,在所有地方添加这条线可能会很乏味。然后还可以用更改ggplot的默认行为

theme_update(plot.title = element_text(hjust = 0.5))

一旦你运行了这一行,之后创建的所有情节都将使用主题设置plot.title = element_text(hjust = 0.5)作为默认值:

theme_update(plot.title = element_text(hjust = 0.5))
ggplot() + ggtitle("Default is now set to centered")

enter image description here

要恢复最初的ggplot2默认设置,可以重新启动R会话或选择默认主题

theme_set(theme_gray())

ggeasy包有一个名为easy_center_title()的函数来完成这一点。我发现它比theme(plot.title = element_text(hjust = 0.5))更吸引人,而且更容易记住。

ggplot(data = dat, aes(time, total_bill, fill = time)) +
geom_bar(colour = "black", fill = "#DD8888", width = .8, stat = "identity") +
guides(fill = FALSE) +
xlab("Time of day") +
ylab("Total bill") +
ggtitle("Average bill for 2 people") +
ggeasy::easy_center_title()

enter image description here

请注意,在写这个答案时,你需要从GitHub安装ggeasy的开发版本才能使用easy_center_title()。你可以通过运行remotes::install_github("jonocarroll/ggeasy")来做到这一点。

如果您经常使用图形和ggplot,那么每次添加theme()可能都很累。如果您不想像前面建议的那样更改默认主题,您可能会发现创建自己的个人主题更容易。

personal_theme = theme(plot.title =
element_text(hjust = 0.5))

假设您有多个图,p1, p2和p3,只需添加personal_theme到它们。

p1 + personal_theme
p2 + personal_theme
p3 + personal_theme


dat <- data.frame(
time = factor(c("Lunch","Dinner"),
levels=c("Lunch","Dinner")),
total_bill = c(14.89, 17.23)
)
p1 = ggplot(data=dat, aes(x=time, y=total_bill,
fill=time)) +
geom_bar(colour="black", fill="#DD8888",
width=.8, stat="identity") +
guides(fill=FALSE) +
xlab("Time of day") + ylab("Total bill") +
ggtitle("Average bill for 2 people")


p1 + personal_theme