ggplot geom_text字体大小控制


93

我尝试ggplot2通过执行以下操作将条形图的标签的字体更改为10 :

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_text3,现在看起来像字体10,类似于轴标签。

我想知道发生了什么事?确实theme(text=element_text(size=10))并不适用于标签?

为什么10 in的尺寸与in的尺寸geom_text()不同theme(text=element_text())

Answers:


141

以下是一些用于更改文本/标签大小的选项

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)

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


为此,为什么geom_text()中的10大小与theme(text = element_text())中的大小不同?

是的,它们是不同的。我进行了快速的手动检查,结果geom_text尺寸与theme尺寸的比值约为〜(14/5)。

因此,统一大小的可怕解决方案就是按此比例进行缩放

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
有趣的是,您检查了什么才能找出14/5的比率?
奥拉拉

34
我懂了。您使我想起了我最近阅读的内容,我想这是单位的差异,geom_text默认值5可能是5mm,theme()大小单位是点。1点是1/72英寸= 0.35mm,所以geom_text()中的1是1mm,1 / 0.35 =
〜14

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.