You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改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

火山引擎 最新活动