2016-04-14 119 views
1

這似乎是一個相當基本的問題,但我對ggplot2比較新,我似乎無法弄清楚這一點。如果對於我在這裏誤解的「語法」有一些基本的瞭解,如果有人能夠直接指出我的意思,那將是非常棒的。或者只是告訴我如何改變這些標籤將是巨大的......R線圖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]分配它們,但這些東西似乎都不起作用,所以我不會在這裏列出它們。有沒有一種簡單的方法來從角色矢量中分配圖例標籤?

非常感謝您的任何幫助。

回答

0

我們推薦長格式使用數據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) 

enter image description here

+0

完美。這是我想要的確切結果。爲了將來的參考,有沒有辦法在圖例中手動設置標籤? – seth127

+0

是的,看看'?scale_colour_manual',你可以添加如下標籤:'scale_colour_manual(values = cbb,labels = c(「label1」,「label2」,「label3」,「label4」))'' – beetroot