ggplot2 中的中心图标题
Center Plot title in ggplot2
这个简单的代码(以及我今天早上的所有脚本)已经开始在 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")
来自 ggplot 2.2.0
的发布消息:"The main plot title is now left-aligned to better work better with a subtitle"。另见 ?theme
中的 plot.title
参数:"left-aligned by default".
正如@J_F 所指出的,您可以添加 theme(plot.title = element_text(hjust = 0.5))
使标题居中。
ggplot() +
ggtitle("Default in 2.2.0 is left-aligned")
ggplot() +
ggtitle("Use theme(plot.title = element_text(hjust = 0.5)) to center") +
theme(plot.title = element_text(hjust = 0.5))
如 answer by Henrik 中所述,从 ggplot 2.2.0 开始,标题默认为 left-aligned。标题可以通过将其添加到绘图中来居中:
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")
要恢复到原来的 ggplot2 默认设置,您可以重新启动 R session 或使用
选择默认主题
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()
请注意,在撰写此答案时,您需要从 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
这个简单的代码(以及我今天早上的所有脚本)已经开始在 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")
来自 ggplot 2.2.0
的发布消息:"The main plot title is now left-aligned to better work better with a subtitle"。另见 ?theme
中的 plot.title
参数:"left-aligned by default".
正如@J_F 所指出的,您可以添加 theme(plot.title = element_text(hjust = 0.5))
使标题居中。
ggplot() +
ggtitle("Default in 2.2.0 is left-aligned")
ggplot() +
ggtitle("Use theme(plot.title = element_text(hjust = 0.5)) to center") +
theme(plot.title = element_text(hjust = 0.5))
如 answer by Henrik 中所述,从 ggplot 2.2.0 开始,标题默认为 left-aligned。标题可以通过将其添加到绘图中来居中:
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")
要恢复到原来的 ggplot2 默认设置,您可以重新启动 R session 或使用
选择默认主题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()
请注意,在撰写此答案时,您需要从 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