【问题标题】:Variable label position in ggplot line chartggplot折线图中的可变标签位置
【发布时间】: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 刚刚实现了我的建议。

标签: r ggplot2


【解决方案1】:

分别绘制不同vjust 值的线怎么样?你可以在图例设置show_guide = FALSE中去掉a

ggplot(df, aes(x=maxrep, y=freq, colour=div, label = freq)) +
    geom_line() +
    geom_text(data = df[df$div == "Second Division",], vjust=2, show_guide = FALSE) + geom_text(data = df[df$div == "Premier Division",], vjust=-2, show_guide = FALSE)

返回:

【讨论】:

    【解决方案2】:

    在data.frame中创建一个新变量,保存vjust调整参数:

    df$pos <- c(2, -2)[(df$div == "Premier Division")+1] 
    

    您可以使用新的pos 向量在aes 内调用vjust

    ggplot(df, aes(x=maxrep, y=freq, colour=div)) +
        geom_line() +
        geom_text(aes(label=freq, vjust=pos))
    

    【讨论】:

    • 谢谢,这很棒,我设法在更多条件下采用它。在我问这个问题之前,我实际上尝试过这个,但我没有意识到 vjust 部分需要在 aes 内。
    猜你喜欢
    • 2014-01-01
    • 2023-04-05
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多