【发布时间】:2015-01-31 16:00:41
【问题描述】:
我使用dplyr创建了以下数据框摘要
structure(list(maxrep = c(7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L, 11L,
11L, 12L, 12L, 13L, 13L, 14L, 14L, 15L, 15L, 16L, 16L, 17L, 17L,
18L, 18L, 19L, 19L, 20L, 20L, 21L, 21L, 22L, 22L, 23L, 23L, 24L,
24L, 26L, 26L), div = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("Premier Division",
"Second Division"), class = "factor"), freq = c(1L, 10L, 4L,
39L, 26L, 89L, 73L, 146L, 107L, 162L, 117L, 133L, 121L, 125L,
116L, 91L, 110L, 65L, 95L, 43L, 75L, 38L, 43L, 24L, 38L, 16L,
36L, 5L, 15L, 2L, 9L, 7L, 9L, 1L, 3L, 3L, 2L, 1L)), .Names = c("maxrep",
"div", "freq"), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -38L))
我的意图是使用 ggplot2 绘制 2 条不同颜色的线的折线图,并为每个值添加文本标签。
我做的是
ggplot(df, aes(x=maxrep, y=freq, colour=div)) +
geom_line() +
geom_text(aes(label=freq), vjust=-.5)
结果是
现在我的问题是:图表中的所有标签都位于相应行的点上方。我想让不同颜色的标签处于不同的相对位置,例如行上方的青色标签,以及行下方的红色标签(即变量vjust)。有没有办法做到这一点?
另外,有没有办法读取右侧颜色图例中的字母a?
【问题讨论】:
-
您是否考虑过绘制每条线,同时改变每条线的 hjust 和 vjust ?
-
不是真的;真的不知道将
geom_text分成两部分,每行一个? -
好吧,@RStudent 刚刚实现了我的建议。