【问题标题】:Manual legend labels for line graph ggplot2 in RR中折线图ggplot2的手动图例标签
【发布时间】:2016-08-05 20:23:11
【问题描述】:

这似乎是一个相当基本的问题,但我对 ggplot2 比较陌生,我似乎无法弄清楚这一点。如果我在这里误解了关于“语法”的一些基本内容,那么如果有人能指出我正确的方向,那就太好了。或者只是告诉我如何更改这些标签会很棒......

假设我有这个(假)数据:

avgTerms <- data.frame(itNum = seq(1,15),
                   i15 = runif(15,5,7),
                   i20 = runif(15,5.5,7.5),
                   i25 = runif(15,4,7),
                   i30 = runif(15,6,8))

我用它制作了一个基本的线图,如下所示:

#colour palette (colorblind-friendly)
cbb <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
#plot
avgTermsplot <- ggplot(data=avgTerms, aes(itNum, avgTerms[,2]))
avgTermsplot <- avgTermsplot + geom_line(aes(itNum, avgTerms[,2], colour=cbb[2]))
avgTermsplot <- avgTermsplot + geom_line(aes(itNum, avgTerms[,3], colour=cbb[3]))
avgTermsplot <- avgTermsplot + geom_line(aes(itNum, avgTerms[,4], colour=cbb[4]))
avgTermsplot <- avgTermsplot + geom_line(aes(itNum, avgTerms[,5], colour=cbb[5]))
avgTermsplot <- avgTermsplot + labs(x="Iteration Number", y="Avg # of Tags Applied")

print(avgTermsplot)

如您所见,图例中的标签是颜色代码。没有用。我希望它们成为 data.frame 中的列名。 (如,它们应该是i15i20 等。)我尝试了很多东西,试图从向量 names(avgTerms)[2:5] 分配它们,但这些东西似乎都不起作用,所以我不会t 在此处列出所有内容。有没有一种简单的方法可以从字符向量中分配图例标签?

非常感谢您的帮助。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    ggplot2建议使用长格式数据,所以先把你的数据融化:

    library(reshape2)
    avgTerms.m <- melt(avgTerms, id.vars = "itNum")
    

    然后根据variable分配颜色:

    ggplot(data = avgTerms.m, aes(itNum, value, colour = variable)) +
      geom_line() +
      labs(x = "Iteration Number", y = "Avg # of Tags Applied") +
      scale_colour_manual(values = cbb)
    

    【讨论】:

    • 完美。这正是我想要的结果。不过,为了将来参考,有没有办法手动设置图例中的标签?
    • 是的,看看?scale_colour_manual,你可以像这样添加标签:scale_colour_manual(values = cbb, labels = c("label1", "label2", "label3", "label4"))
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 2015-08-02
    • 2021-01-06
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多