Centre Plot-titel in ggplot2

Deze eenvoudige code (en al mijn scripts van vanmorgen) geeft me een niet-gecentreerde titel in ggplot2:

Ubuntu version: 16.04
R studio version: Version 0.99.896
R version: 3.3.2
GGPLOT2 version: 2.2.0

Ik heb het bovenstaande vanmorgen opnieuw geïnstalleerd om te proberen dit op te lossen…

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")


Antwoord 1, autoriteit 100%

Van het release-nieuws van ggplot 2.2.0: “Het belangrijkste plot titel is nu links uitgelijnd om beter te werken met een ondertitel”. Zie ook het argument plot.titlein ?theme: “standaard links uitgelijnd”.

Zoals aangegeven door @J_F, kunt u theme(plot.title = element_text(hjust = 0.5))toevoegen om de titel te centreren.

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))


Antwoord 2, Autoriteit 36%

Zoals vermeld in de Antwoord door Henrik , titels worden standaard uitgelijnd met GGPLOT 2.2.0. Titels kunnen gecentreerd worden door dit aan het perceel toe te voegen:

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

Als u echter veel plots maakt, kan het vervelend zijn om deze regel overal toe te voegen. Men kan dan ook het standaardgedrag van GGPLOT wijzigen met

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

Nadat u deze regel hebt uitgevoerd, gebruiken alle percelen die achteraf zijn gemaakt, de themabinitie plot.title = element_text(hjust = 0.5)ALS WETTELIJKHEID:

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

Om terug te gaan naar de standaard GGPLOT2 Standaardinstellingen U kunt de R-sessie opnieuw opstarten of het standaardthema kiezen met

theme_set(theme_gray())

Antwoord 3, Autoriteit 2%

Het ggeasypakket heeft een functie genaamd easy_center_title()om precies dat te doen. Ik vind het veel aantrekkelijker dan theme(plot.title = element_text(hjust = 0.5))en het is zoveel gemakkelijker te onthouden.

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()

Merk op dat je vanaf het moment van schrijven van dit antwoord de ontwikkelversie van ggeasyvan GitHub moet installeren om easy_center_title()te gebruiken. U kunt dit doen door remotes::install_github("jonocarroll/ggeasy")uit te voeren.


Antwoord 4

Als je veel met grafieken en ggplot werkt, ben je misschien moe om het thema() elke keer toe te voegen. Als je het standaardthema niet wilt wijzigen, zoals eerder voorgesteld, is het misschien makkelijker om je eigen persoonlijke thema te maken.

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

Stel dat je meerdere grafieken hebt, p1, p2 en p3, voeg daar gewoon personal_theme aan toe.

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

Other episodes