2016-08-16 174 views
1

這是我的數據:řmatplot匹配圖例顏色線條顏色

name a  b c 
alex 25.4347 18 1.81 
brian 0.14354 220 1.4 
chris 51.39 1.5 1.05 
david 0.8465 75 1.42 
eric 1.53775 82 1.81 
fred 5.74352 28.5 1.92 
greg 12.91 4 1.1 
henry 0.2797 100 1.35 
isaac 10.14 7 1.08 
jacob 0.03768 480 1.85 

我想繪製爲每個人線,利用根據A,B,和C具有不同的化學式的每個人參數。

我寫這篇文章的代碼繪製線條:

s = seq(-60,20,by =.1) 
matplot(s,t(sapply(s, function(x) ifelse(dt$name == "alex" | 
              dt$name == "brian" | 
              dt$name == "chris" | 
              dt$name == "david", 
             dt$a*((dt$b + x)^dt$c), 
             dt$a*((x - dt$b)^dt$c)))), 
     type = "l", lty = "solid", lwd = 2, ylab = "y axis label", xlab = "x axis title") 

legend("left", legend = dt$name, lty=c(1,1), lwd=c(2.5,2.5), col = dt$name) 

但是,我不能讓傳奇色彩,以配合線條顏色。我收到一個錯誤,說第一個名字不是顏色。任何幫助?

+0

請與'dput'分享數據,而不是粘貼表格(請參閱R標記說明) –

+0

您能更清楚地知道我該怎麼做嗎? (對不起,我是R新手。) – Jim

回答

2

您需要將col設置爲matplot()legend()中的有效顏色。假設你要的顏色設置col_set <- rainbow(nrow(dt)),我們就可以這樣做:

s = seq(-60,20,by =.1) 
matplot(s,t(sapply(s, function(x) ifelse(dt$name %in% c("alex", "brian", "chris", "david"), 
             dt$a*((dt$b + x)^dt$c), 
             dt$a*((x - dt$b)^dt$c)))), 
     type = "l", lty = "solid", lwd = 2, ylab = "y axis label", 
     xlab = "x axis title", col = col_set) 

legend("left", legend = dt$name, lty=c(1,1), lwd=c(2.5,2.5), col = col_set) 

enter image description here

另外請注意我是如何與一個%in%取代你的長==