2014-12-05 130 views
1

我想要繪製線條和色彩基於該連接的概率就行。給定一個概率向量,我使用:colorRamp返回0

colfunc <- colorRamp(c("white", "red")) 
colors <- colfunc(probs) 

顏色是rgb值的nx3矩陣。然而,colfunc經常會返回一個0值,所以當我嘗試使用這些顏色來繪製,R抱怨

Error in col2rgb(colors) : numerical color values must be positive 

有沒有在我定義我的色彩功能的方法錯誤?

回答

-1

我有點困惑什麼你試圖做...的col2rgb函數返回RGB值,所以如果你已經擁有這些,那麼你想要什麼?

或者,如果你想RGB,爲什麼不使用:

col2rgb(c("white", "red")) 
1

你的功能工作正常,我想,但它不返回你可以用plot使用的顏色,因爲plot想要一個顏色,而不是RGB矩陣中的值。

有可能是一個更好的辦法,但你完全可以隱蔽矩陣:

probs <- runif(10) 
colors <- colfunc(probs) 
my_col = apply(colors, MARGIN = 1, function(x) rgb(x[1]/255, x[2]/255, x[3]/255)) 

plot(1:10, 1:10, col = my_col) # should work fine 

,或者你可以只換你的函數

better_colfunc <- function(x, ramp = colorRamp(c("white", "red"))) { 
    colors <- ramp(x) 
    colors = apply(colors, MARGIN = 1, function(x) rgb(x[1]/255, x[2]/255, x[3]/255)) 
    return(colors) 
} 

plot(1:10, 1:10, col = better_colfunc(probs, ramp = colfunc)) 

至於「colfunc經常會返回一個0值」和其它問題,你需要同時共享一些數據(做什麼你probs的樣子?),以及可能的實際繪圖代碼。 See here提供有關製作可重複問題的提示。