ggplot geom_text yazı tipi boyutu denetimi


93

Çubuk grafiğimdeki etiketler için yazı tipini 10 olarak değiştirmeye çalıştım, bunun ggplot2gibi bir şey:

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") + 
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)

ancak ortaya çıkan görüntü, çubuk grafik etiketleri için süper büyük yazı tipi boyutuna sahiptir.

Sonra geom_text()bununla değiştirmeyi düşündüm :

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")

Etiket yazı tipi daha da büyük ...

İçerideki boyutu geom_text3 gibi değiştirebilirim ve şimdi eksen etiketlerine benzer yazı tipi 10 gibi görünüyor.

Merak ediyorum neler oluyor? Mu theme(text=element_text(size=10))etiketleri için geçerli değildir?

Ve neden 10 inçlik boyut içindekinden geom_text()farklı theme(text=element_text())?

Yanıtlar:


141

Metin / etiket boyutlarını değiştirmek için birkaç seçenek aşağıda verilmiştir

library(ggplot2)

# Example data using mtcars

a <- aggregate(mpg ~ vs + am , mtcars, function(i) round(mean(i)))

p <- ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
            geom_bar(stat="identity",position="dodge") + 
            geom_text(data = a, aes(label = mpg), 
                            position = position_dodge(width=0.9),  size=20)

sizeİçinde geom_textboyutunu değiştirir geom_textetiketleri.

p <- p + theme(axis.text = element_text(size = 15)) # changes axis labels

p <- p + theme(axis.title = element_text(size = 25)) # change axis titles

p <- p + theme(text = element_text(size = 10)) # this will change all text size 
                                                             # (except geom_text)


Bunun için Ve neden geom_text () 'deki 10'un boyutu temadakinden (text = element_text ()) farklı?

Evet, farklılar. Hızlı bir manuel kontrol yaptım ve geom_textboyutlar için themeboyutlar için ~ (14/5) oranında görünüyorlar .

Dolayısıyla, tek tip boyutlar için korkunç bir düzeltme, bu orana göre ölçeklendirmektir.

geom.text.size = 7
theme.size = (14/5) * geom.text.size

ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
  geom_bar(stat="identity",position="dodge") + 
  geom_text(data = a, aes(label = mpg), 
            position = position_dodge(width=0.9),  size=geom.text.size) + 
  theme(axis.text = element_text(size = theme.size, colour="black")) 

Bu elbette nedenini açıklamıyor ? ve bir pide (ve bunu yapmanın daha mantıklı bir yolu olduğunu varsayıyorum)


2
ilginç, 14/5 oranını bulmak için neyi kontrol ettin?
olala

34
anlıyorum. Bana son zamanlarda okuduğum bir şeyi hatırlatıyorsun, sanırım birimlerdeki fark bu, 5'in geom_text varsayılanı 5mm ve theme () boyut birimi punto olabilir. 1 puan) geom_text kadar 1 (1/72 inç = 0.35 1mm, 1 / 0.35 = ~ 14/5 :) olduğu
olala

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.