将文件名或其他注释添加到ggplot数字中

时间:2014-04-23 23:16:47

标签: r ggplot2

我使用ggplot来制作我的大部分图片。这些可以是单面板,也可以是刻面。为了更容易跟踪修订,我想在图的角落生成一个包含一些文本的小标签。

在伪代码中,我正在寻找类似的东西:

# generate the initial plot
p <- ggplot()
# add the label
p + someAnnotationFunction(label = "Version 1.0", x = 1, y = 0, 
                           hjust = "right", vjust = "bottom" )
# print
print(p) 

或者:将我的标签贴在我的图的右下角,而不会弄乱现有的ggplot图形。

到目前为止,我找不到任何解决方案。如果您有一个完整的m x n方面表,This(非常有趣)方法不起作用。使用gridExtra的方法往往会过多地弄乱这些情节。那么,有没有人有办法在使用ggplot生成的图上的任何地方添加任意文本?

2 个答案:

答案 0 :(得分:2)

根据Baptiste的评论,这是一个使用gridExtra()的有效解决方案:

require("ggplot2")
require("gridExtra")

# set our working directory 
working.dir <- '/Users/aclifton/Documents/projects/Rcode' 
setwd(working.dir)

# create a data frame
df <- data.frame(x =runif(100, 1, 10),
                 y = runif(100, 1, 10))
#create a plot
p <- ggplot(data = df,
            aes(x = x,
                y = y)) +
  geom_point()

print(p)        

我们现在有了我们的情节,诀窍是添加该标签并使用ggsave()保存整体情节:

# label to show
sub.label = textGrob("Some kind of label", 
               gp=gpar(fontsize=6),
               x = unit(1, "npc"),
               hjust = 1,
               vjust = 0)

ggsave(filename=file.path(working.dir,'DemoPlot.png'),
       plot = arrangeGrob(p,
                          sub = sub.label,
                          clip = FALSE),
       scale = 1,
       width = 6.5,
       height = 3.5, 
       units = c("in"),
       dpi = 300)

哪个给你这个: enter image description here

答案 1 :(得分:1)

通过制作注释的数据框,您可以使用geom_text将它们添加到地块的顶部。

note <- data.frame(xVarName = c(1, 5), yVarName = c(1, 10), 
    text = c("Version 1.0", "April 26, 2014")

 p + geom_text(data = anno, aes(label = text))

&#34;版本1.0&#34;将显示在左下角和&#34; 2014年4月26日&#34;将显示在右上角。

通过在单独的数据框中创建笔记,您可以根据需要向一个图形添加多个笔记。