【问题标题】:How to change font size in geom_text() outside plot area?如何在绘图区域外的 geom_text() 中更改字体大小?
【发布时间】:2016-10-19 19:51:02
【问题描述】:

我想注释一个情节,并且我希望注释位于情节区域之外。我找到了this solution,它适用于在绘图区域外添加注释,但我不知道如何更改标签的外观(最重要的是,为了我的目的,字体大小)。

这是上述解决方案的一个最小示例:

library (ggplot2)
library(grid)

df=data.frame(y=c("dog1","dog2","dog3"),x=c(12,10,14),n=c(5,15,20))
p <- ggplot(df, aes(x,y)) + geom_point()

# Add the annotation
p <- p + geom_text(aes(label = "Hello World!", x = 0, y = 0), vjust = 2, hjust = 1)

# Code to override clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)

理想情况下,注释应位于左下角。

【问题讨论】:

  • 如果您使用链接问题中的示例(使用annotation_customtextGrob),请更改cex 的值以更改字体大小。除了cex,您还可以使用fontsize 参数来设置字体大小(以磅为单位)。例如,不要使用cex=1.5,而是使用fontsize=12(或您喜欢的任何大小)。其他与文字外观相关的参数,请查看gpar的帮助。
  • 我更喜欢这种方法:stackoverflow.com/a/17493256/471093 因为关闭剪辑可能会产生不良后果

标签: r plot ggplot2 geom-text


【解决方案1】:
library (ggplot2)
library(grid)

df=data.frame(y=c("dog1","dog2","dog3"),x=c(12,10,14),n=c(5,15,20))
p <- ggplot(df, aes(x,y)) + geom_point()

# Add the annotation
p <- p + geom_text(size=8, colour="red", aes(label = "Hello World!", x = 0, y = 0), vjust = 2.5, hjust = 1)

# Code to override clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)

【讨论】:

  • 如果你不打算使用annotation_custom,那么你应该为geom_text创建一个新的数据框。否则,“Hello World!”将被过度绘制 3 次,父数据框的每一行一次。这就是注释文本看起来参差不齐的原因。如果您在对 geom_text 的调用中执行 x=c(1,3,5) 以展开“Hello World!”的三个副本,则可以表明正在发生过度绘图。
  • @eipi10:这也困扰着我。谢谢你的解释。
猜你喜欢
  • 2019-05-02
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 2017-06-03
  • 1970-01-01
  • 2014-09-23
  • 2012-03-03
相关资源
最近更新 更多