दिखाने के लिए 2 या अधिक रंग पैलेट कैसे मिश्रण कर सकते हैं मैं एक साजिश बनाने की कोशिश कर रहा हूं जहां रंग कई मानों के संयोजन का प्रतिनिधित्व करता है। नीचे दिए गए उदाहरण में, मैं एक्स-समन्वय से जुड़े लाल के लिए बढ़ते मूल्यों को लागू कर रहा हूं और वाई-समन्वय से जुड़े नीले रंग के मूल्यों को बढ़ा रहा हूं। जब एक्स = 1 और y = 10, रंग के मिश्रण "सफेद" और "नीले", क्रमशः, नीले रंग से हल्का छाया देता हैसंयुक्त रंग मान
#required function 'val2col' from: http://www.menugget.blogspot.de/2011/09/converting-values-to-color-levels.html
val2col<-function(z, zlim, col = heat.colors(12), breaks){
if(!missing(breaks)){
if(length(breaks) != (length(col)+1)){stop("must have one more break than colour")}
}
if(missing(breaks) & !missing(zlim)){
zlim[2] <- zlim[2]+c(zlim[2]-zlim[1])*(1E-3)#adds a bit to the range in both directions
zlim[1] <- zlim[1]-c(zlim[2]-zlim[1])*(1E-3)
breaks <- seq(zlim[1], zlim[2], length.out=(length(col)+1))
}
if(missing(breaks) & missing(zlim)){
zlim <- range(z, na.rm=TRUE)
zlim[2] <- zlim[2]+c(zlim[2]-zlim[1])*(1E-3)#adds a bit to the range in both directions
zlim[1] <- zlim[1]-c(zlim[2]-zlim[1])*(1E-3)
breaks <- seq(zlim[1], zlim[2], length.out=(length(col)+1))
}
colorlevels <- col[((as.vector(z)-breaks[1])/(range(breaks)[2]-range(breaks)[1]))*(length(breaks)-1)+1] # assign colors to heights for each point
colorlevels
}
#data
x <- seq(100)
y <- seq(100)
grd <- expand.grid(x=x,y=y)
#assign colors to grd levels
pal1 <- colorRampPalette(c("white", rgb(1,0,0)), space = "rgb")
col1 <- val2col(x, col=pal1(10))
pal2 <- colorRampPalette(c("white", rgb(0,0,1)), space = "rgb")
col2 <- val2col(y, col=pal2(10))
col3 <- NA*seq(nrow(grd))
for(i in seq(nrow(grd))){
xpos <- grd$x[i]
ypos <- grd$y[i]
coltmp <- (col2rgb(col1[xpos])/2) + (col2rgb(col2[ypos])/2)
col3[i] <- rgb(coltmp[1], coltmp[2], coltmp[3], maxColorValue = 255)
}
#plot
png("2_color_scales.png", width=6, height=4, units="in", res=200)
layout(matrix(c(1,2,3), nrow=1, ncol=3), widths=c(4,1,1), heights=4, respect=T)
par(mar=c(4,4,2,2))
plot(grd,col=col3, pch=19)
par(mar=c(4,0,2,5))
image(x=1, y=x, z=t(as.matrix(x)), col=pal1(10), xaxt="n", yaxt="n", xlab="", ylab="")
box()
axis(4)
mtext("x", side=4, line=3, cex=0.7)
par(mar=c(4,0,2,5))
image(x=1, y=y, z=t(as.matrix(y)), col=pal2(10), xaxt="n", yaxt="n", xlab="", ylab="")
box()
axis(4)
mtext("y", side=4, line=3, cex=0.7)
dev.off()
नतीजा यह है कि में तकनीकी रूप से सही है। हालांकि, मैं इस स्थिति को वाई रंगीन बार के सबसे गहरे नीले रंग के रूप में "नीला" के रूप में देखना चाहूंगा। मुझे कल्पना है कि रंगीन सफेद की बजाय कम मूल्यों के लिए पारदर्शिता का उपयोग करने की आवश्यकता होगी। क्या किसी के पास सुझाव है कि यह कैसे पूरा किया जा सकता है? अपनी पारदर्शिता समेत दो रंग जोड़ना, मेरे बाहर है ... मैंने सोचा कि कोई मिश्रण मिश्रण में भारोत्तोलन मूल्य का उपयोग करने में सक्षम हो सकता है?
आपकी मदद के लिए धन्यवाद।
+1 धन्यवाद आंद्रे - यह काफी सहज है। बहुत कॉम्पैक्ट कोड भी। क्या आपके लिए ऐसी साजिश में संबंधित रंग स्केल जोड़ने के लिए आसान होगा? मुझे लगता है कि मैंने सोचा था कि एक घटिया सायन-मैजेंटा-पीला प्रकार का रंग मॉडल (यानी जब कोई रंग लागू नहीं होता है तो सफेद बराबर होता है) एक योजक आरजीबी रंग मॉडल की तुलना में प्रिंटिंग के लिए बेहतर हो सकता है। –
@Marcinthebox मेरा संदेह यह है कि दो तत्वों को एक रंगीन पैमाने में मिलाकर किसी भी प्रयास को समझने के लिए मुश्किल हो जाएगा। आप साजिश करने की क्या कोशिश कर रहे हैं? क्या आप इसके बजाय कुछ अन्य सौंदर्य का उपयोग कर सकते हैं, उदा। दूसरा तत्व इंगित करने के लिए आकार या आकार? – Andrie
मैं सतही जल (यानी स्थानिक रूप से) में तीन पोषक तत्व सांद्रता की प्रस्तुति में ऐसी साजिश का उपयोग करने के बारे में सोच रहा था। मैं उम्मीद कर रहा था कि ऐसा नक्शा इन स्थानिक पैटर्न को देखने का एक सहज तरीका हो सकता है। मैंने 3 पोषक तत्व सांद्रता के लिए रंग ढाल दिखाते हुए एक त्रि-साजिश होने के लिए संबंधित रंग कुंजी की कल्पना की। –