Этот простой код (и все мои скрипты с этого утра) начал выдавать мне заголовок вне центра в 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

Christopher John

Ответов: 4

Ответы (4)

Из новостей о выпуске ggplot 2.2.0: «Заголовок основного сюжета теперь выровнен по левому краю, чтобы лучше работать с подзаголовком». См. Также аргумент plot.title в ? Theme: «по умолчанию с выравниванием по левому краю».

Как указано @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

Если вы много работаете с графиками и ggplot, возможно, вам надоело каждый раз добавлять тему (). Если вы не хотите изменять тему по умолчанию, как было предложено ранее, вам может быть проще создать свою собственную личную тему.

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

Как указано в ответе Хенрика, заголовки по умолчанию выравниваются по левому краю, начиная с 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 () для этого. Мне она кажется намного более привлекательной, чем тема (plot.title = element_text (hjust = 0.5)), и ее намного легче запомнить.

ggplot (data = dat, aes (time, total_bill, fill = time)) +
  geom_bar (color = "black", fill = "# DD8888", width = .8, stat = "identity") +
  направляющие (заполнить = ЛОЖЬ) +
  xlab ("Время дня") +
  ylab ("Общий счет") +
  ggtitle ("Средний счет для 2 человек") +
  ggeasy :: easy_center_title ()

enter image description here

Обратите внимание, что на момент написания этого ответа вам нужно будет установить разрабатываемую версию ggeasy с GitHub, чтобы использовать easy_center_title (). Вы можете сделать это, запустив remotes :: install_github ("jonocarroll / ggeasy").

2022 WebDevInsider