2016-06-17 315 views
3

我想注释一个情节,我想让笔记在情节区外。我发现this solution它适用于在绘图区域外添加笔记,但我无法弄清楚如何更改标签的外观(最重要的是,为了我的目的,字体大小)。如何更改geom_text()在绘图区域外的字体大小?

下面是从上述方案中一个最小的例子:

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) 

理想的情况下,说明将在左下角。

+2

如果您在链接问题(使用'annotation_custom'和'textGrob')使用示例,请更改'cex'的值以更改字体大小。您也可以使用'fontsize'参数来设置字体大小(以磅为单位),而不是'cex'。例如,不是'cex = 1.5',而是'fontsize = 12'(或者你喜欢的任何大小)。对于与文本外观相关的其他参数,请查看'gpar'的帮助。 – eipi10

+0

我更喜欢这种方法:http://stackoverflow.com/a/17493256/471093因为转弯剪下可能会造成有害后果 – baptiste

回答

0
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) 
+2

如果你不打算使用'annotation_custom',那么你应该创建一个'新的数据帧geom_text'。否则,“Hello World!”将被重叠绘制3次,父数据框的每一行将被重复绘制一次。这就是为什么注释文本看起来不整齐。如果您在调用'geom_text'时执行'x = c(1,3,5)'来展开“Hello World!”的三个副本,则可以显示出现重叠绘图。 – eipi10

+0

@ eipi10:那也是在烦我。感谢您的解释。 – Ole