如何修改ggplot2中annotation_custom()的文本字体大小?
如何调整ggplot中annotation_custom()添加的文本字体大小
你碰到的这个问题其实很典型——annotation_custom()本身确实不支持直接传入size参数来调整字体,想要改变文本大小,得从你创建的textGrob对象本身入手,用grid包的gpar()函数来设置字体属性。
具体解决方法
在创建textGrob的时候,通过gp参数传递gpar(fontsize = 你需要的尺寸),就能轻松自定义字体大小了。修改后的完整代码如下:
df <- data.frame(x=seq(1:100), y=sort(rexp(100, 2))) p= ggplot(df, aes(x=x, y=y)) + geom_point()+ theme(plot.margin = unit(c(1,1,3,1), "cm"))+ ggtitle('Random Plot') # 用gpar()设置字体大小,这里设为8,你可以根据需求调整 Text1 = textGrob('Additional suggestions:', gp = gpar(fontsize = 8)) p1 = p + annotation_custom(grob = Text1, xmin = 0.2, xmax = 0.2, ymin = -0.3, ymax = -0.3) gt <- ggplotGrob(p1) gt$layout$clip[gt$layout$name=="panel"] <- "off" grid.newpage() grid.draw(gt)
补充说明
gpar()是grid体系中用来配置图形参数的核心函数,除了fontsize,你还可以用它设置文本颜色(col)、字体样式(fontface,比如bold粗体、italic斜体)等其他文本属性- 之前你尝试用
geom_text(size=8)无效,是因为你添加文本用的是annotation_custom()(基于grid的grob对象),而非geom_text()(ggplot的图层函数),两者的参数逻辑完全不同
内容的提问来源于stack exchange,提问作者mizzlosis




