Ggplot2'deki Orta Konu başlığı


257

Merhaba bu basit kod (ve bu sabahki tüm senaryolarım) bana ggplot2'de merkez dışı bir başlık vermeye başladı

Ubuntu version: 16.04

R studio version: Version 0.99.896

R version: 3.3.2

GGPLOT2 version: 2.2.0

Bunu denemek ve düzeltmek için bu sabah taze yükledim ....

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

resim açıklamasını buraya girin


53
kullanımı... + theme(plot.title = element_text(hjust = 0.5))
J_F

Yanıtlar:


336

Serbest bırakılması Haberlerden ggplot 2.2.0: "Ana arsa başlık şimdi daha iyi bir altyazı ile daha iyi çalışmak için sola hizalanır" . Ayrıca, "varsayılan olarak sola hizalı" konusundaki plot.titlebağımsız değişkene de bakın ?theme.

@J_F tarafından işaret edildiği gibi, theme(plot.title = element_text(hjust = 0.5))başlığı ortalamak için ekleyebilirsiniz .

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

resim açıklamasını buraya girin

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

resim açıklamasını buraya girin


Bunun yerine kullandığımda ... theme(plot.title = element_text(hjust = 'center'))hata uyarı mesajları alıyorum: 1: In unit(rep(xp, n), "npc") : NAs introduced by coercionv2: In validDetails.text(x) : NAs introduced by coercion ve başlık yok. Bu bir hata mı?
James Hirschorn

2
@JamesHirschorn Bu bir hata değil. Kullanılan değer hjustsayısal olmalıdır.
17'de Stibu

ggplot2 sürüm 3.3.0'dan itibaren, başlık varsayılan olarak ortalanmıştır.
Akronix

Etrafında başka bir yolla ilgileniyorsanız: merkezden sola hizalanmış olarak sola kaydırmak için, SO'nun şu cevabını kullanabilirsiniz: stackoverflow.com/a/57792897/2904315
Akronix

Bu kodu ekledim theme(plot.title = element_text(hjust = 0.5)), ama işe yaramadı, garip.
ahbon

134

Belirtildiği gibi Henrik tarafından cevap , başlıklar sola hizalanmış ggplot 2.2.0 ile başlayan varsayılan olarak bulunmaktadır. Başlıklar, şemaya eklenerek ortalanabilir:

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

Ancak, çok sayıda grafik oluşturursanız, bu satırı her yere eklemek sıkıcı olabilir. Daha sonra, ggplot'un varsayılan davranışını

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

Bu satırı çalıştırdıktan sonra, daha sonra oluşturulan tüm grafikler tema ayarını plot.title = element_text(hjust = 0.5)varsayılan olarak kullanır:

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

resim açıklamasını buraya girin

Orijinal ggplot2 varsayılan ayarlarına geri dönmek için R oturumunu yeniden başlatabilir veya

theme_set(theme_gray())

2

ggeasyPaket adı verilen bir işlevi vardır easy_center_title()sadece bunu yapmak için. Bundan çok daha çekici buluyorum theme(plot.title = element_text(hjust = 0.5))ve hatırlaması çok daha kolay.

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

resim açıklamasını buraya girin

Bu yanıtı yazarken ggeasykullanmak için GitHub'ın geliştirme sürümünü kurmanız gerektiğini unutmayın easy_center_title(). Bunu koşarak yapabilirsiniz remotes::install_github("jonocarroll/ggeasy").

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.