如何很好地注释ggplot2(手动)

使用ggplot2我通常使用geom_text和类似position=jitter东西来标注我的情节。

但是 – 对于一个好的情节,我经常发现值得手动注释。 如下所示:

 data2 <- structure(list(type = structure(c(5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L), .Label = c("EDS", "KIU", "LAK", "MVH", "NA*"), class = "factor"), value = c(0.9, 0.01, 0.01, 0.09, 0, 0.8, 0.05, 0, 0.15, 0, 0.41, 0.04, 0.03, 0.52, 0, 0.23, 0.11, 0.02, 0.64, 0.01), time = c(3L, 3L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 27L, 27L, 27L), year = c(2008L, 2008L, 2008L, 2008L, 2008L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2006L, 2006L, 2006L, 2006L, 2006L)), .Names = c("type", "value", "time", "year"), row.names = c(1L, 3L, 4L, 5L, 6L, 7L, 9L, 10L, 11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 21L, 22L, 23L, 24L), class = "data.frame") ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw()+ annotate("text", x=6, y=0.9, label="this is a wrong color")+ annotate("text", x=15, y=0.6, label="this is a second annotation with a wrong color") 

问题是,我无法获得文本注释颜色以匹配线条颜色。 我想我可以用手动的比例来解决这个问题,但是我希望有一个更好的方法?

如果您使用geom_text()而不是annotate(),则可以将组颜色传递给您的graphics:

 ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(aes(7, .9, label="correct color", color="NA*")) + geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

所以使用annotate()它看起来像这样: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/03/before.png

然后使用geom_text()后,它看起来像这样: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/03/after.png

我遇到了类似的问题,并用JD Long答案解决了这个问题。 但是作为ggplot2更新到版本0.9.0的结果,我注意到所有的geom_text()调用在绘图上都geom_text()有些模糊。

感谢kohske我发现这个代码

 ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(aes(7, .9, label="correct color", color="NA*")) + geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

绘制geom_text nrow(data2)次!

将数据提供给geom_text的正确方法是构build一个不同的data.frame,为要绘制的string保存坐标,标签和颜色:

 data2.labels <- data.frame( time = c(7, 15), value = c(.9, .6), label = c("correct color", "another correct color!"), type = c("NA*", "MVH") ) ggplot(data2, aes(x=time, y=value, group=type, col=type))+ geom_line()+ geom_point()+ theme_bw() + geom_text(data = data2.labels, aes(x = time, y = value, label = label))