Ggplot geom_text 字体大小控制

我试图在 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_text中的大小改为类似于3的大小,现在它看起来像字体10,类似于轴标签。

我想知道这是怎么回事? theme(text=element_text(size=10))不适用于标签吗?

为什么 geom_text()的10号尺寸和 theme(text=element_text())的不同?

242882 次浏览

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

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)

geom_text中的 size改变 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不同于主题(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"))

这当然不能解释 为什么?,而是一个皮塔饼(我假设有一个更明智的方法来做到这一点)