我想要繪製兩類數據的散點圖,一個繪製爲黃色,另一個繪製爲黃色一個用藍色表示,並且它們以綠色顯示在它們覆蓋的地方(或任何其他組合)。我發現,即使在透明度方面,情況也會更加困難。圖表的顏色受到空間中繪製的最後一個點是藍色還是黃色的影響。在R中,是否可以在一個繪圖中疊加2種顏色來製作第3種顏色(例如,使用加法或減法顏色混合)
例如用下面的代碼:
col1 <- rgb(red = .0, green = 0, blue = 0.8, alpha = 0.8)
col2 <- rgb(red = .8, green = 0.8, blue = 0, alpha = 0.8)
circle <- data.frame(x = c(0.2,0),
y = c(0,0),
col = c(col1, col2),
stringsAsFactors = F)
orders <- c(1,2)
plot(x = circle$x[orders], y = circle$y[orders],
col = circle$col[orders], pch = 19, cex = 100, xlab = "", ylab = "")
根據您設定的矢量orders
(其中規定了哪種方式輪兩個大點繪製)你會得到不同的結果:
如果你交換你繪製兩個圓圈的順序,你會得到:
無論哪種方式,我是螞蟻攪拌混合顏色以獲得綠色。有沒有辦法做到這一點?謝謝!
編輯 - 這兩個地塊是使用pdf設備。我也嘗試通過tikzDevice運行代碼,看看是否有效,但沒有。
封裝'colorspace'具有如下功能:'mixcolor',將計算這樣的混合顏色的值:HTTP:/ /cran.r-project.org/web/packages/colorspace/colorspace.pdf。我不知道直接做這件事的方法 - 我解決這個問題的辦法是找到一種不同的數據可視化方式,例如, 'hexbin',使用'facets'或者計算每個點的淨分數。 – Andrie
這不是一個真正的答案,但你可以看看http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending - 我假設不同的設備(PDF,tikzDevice,PNG等)都使用這種算法的變化來確定重疊的顏色,它可能會幫助你理解發生了什麼。 –
特別是,我已經從這些公式中找出了一點,即α混合不是可交換的(事實上,正如文章指出的那樣,在某些情況下它也不是聯想性的,儘管這裏並不重要,因爲你只能合併兩種顏色) - 這就解釋了你的「訂單很重要」的結果。 –