为什么在使用theme(text = element_text())缩放文本大小时,绘图标题没有正确缩放?

时间:2013-07-25 19:39:31

标签: r ggplot2

我正在创建一个并排显示两个框图的图表,并且我试图缩放图中的文本,这给了我一些问题。我已经解决了问题,所以现在我想我只是想了解后台发生了什么。

可以下载数据here。 (42 MB)

一个非常基本的情节:

ggplot(perdiffm, aes(variable, value)) + stat_boxplot(geom = 'errorbar') + geom_boxplot()

enter image description here

现在是一个带有适当标签和文字大小的图:

ggplot(perdiffm, aes(variable, value)) + stat_boxplot(geom = 'errorbar') + geom_boxplot() + scale_x_discrete(labels = c('% Difference A', '% Difference B')) + labs(title = "Percent difference between meters", y = '% Difference') + theme(text = element_text(size = rel(5)), axis.title.x = element_blank(), panel.grid.major.x = element_blank())

enter image description here

注意情节标题!!我不明白为什么会这样,但这是我的解决方案:

ggplot(perdiffm, aes(variable, value)) + stat_boxplot(geom = 'errorbar') + geom_boxplot() + scale_x_discrete(labels = c('% Difference A', '% Difference B')) + labs(title = "Percent difference between meters", y = '% Difference') + theme(text = element_text(size = 20), axis.title.x = element_blank(), panel.grid.major.x = element_blank())

基本上只是将text_element(size = rel(5))更改为text_element(size = 20)(正如罗兰所建议的)

enter image description here

所以我的问题是:为什么我必须明确地编码标题的文本大小???为什么text = element_text(size = rel(5))不能使用标题? (我猜两个问题,但他们几乎都问同样的事情)

如果我做错了(非常可能)以及将来如何避免这件事,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:1)

根据文件plot.title继承自title继承自text。所以这看起来像个错误。

增加所有文本大小的规范方法是在主题中设置基本大小。这会保留所有元素的相对文本大小。

情节(不下载您的大数据集,与您的问题无关):

p <- ggplot(mtcars, aes(factor(cyl), mpg))

p + 
  geom_boxplot() + 
  ggtitle("Boxplot")

enter image description here

增加基本尺寸:

p + 
  geom_boxplot() + 
  ggtitle("Boxplot") +
  theme_grey(base_size = 20) #default is 12

enter image description here