使用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(),而不是注释(),您可以通过一组颜色到您的情节:

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")) 

因此,使用注释()它看起来像这样: 替代文字http://www.cerebralmastication.com/wp-content/uploads/2010/ 03 / before.png

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

其他提示

我有一个类似的问题,并与JD龙答案解决它。但作为ggplot2的结果更新至0.9.0版本,我注意到,所有geom_text()calls渲染有些模糊的情节。

由于 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)times!

有关数据提供给geom_text是建立一个不同的data.frame控股坐标,标签和颜色要绘制的字符串的正确方法:

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))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top