Подтвердить что ты не робот

Ggplot geom_text размер шрифта

Я попытался изменить шрифт на 10 для ярлыков моего графика в ggplot2, выполнив что-то вроде этого:

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)

но полученное изображение имеет большой размер шрифта для ярлыков штрихового рисунка.

Затем я подумал о модификации в geom_text() следующим образом:

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

Метка метки еще больше...

Я могу изменить размер внутри geom_text примерно на 3, и теперь он выглядит как шрифт 10, похожий на метки меток.

Мне интересно, что происходит? Не применяется ли theme(text=element_text(size=10)) к ярлыкам?

И почему размер 10 в geom_text() отличается от размера в theme(text=element_text())?

4b9b3361

Ответ 1

Вот несколько вариантов изменения размера текста/метки

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 в geom_text изменяет размер меток geom_text.

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)


Для этого И почему размер 10 в geom_text() отличается от размера в теме (text = element_text())?

Да, они разные. Я проверил быструю ручную проверку, и они выглядят в соотношении ~ (14/5) для размеров geom_text до размеров theme.

Таким образом, ужасное исправление для равномерных размеров заключается в масштабировании по этому соотношению

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

Это, конечно, не объясняет почему? и это лаваш (и я предполагаю, что есть более разумный способ сделать это)

Ответ 2

@olala, правильный синтаксис похож:

theme(axis.text.x = element_text(family="Times", face="italic",
                                          colour="darkred", size=rel(0.9)))

Элемент_текст должен ссылаться на axis.text.x или независимо от вашего объекта. Размер не является абсолютным. Это по умолчанию. т.е. size=rel(0.9)