सवाल रंग 1 और रंग 2 से लेकर एन रंगों का ग्रेडियेंट


मैं अक्सर काम करता हूं ggplot2 जो ग्रेडियेंट अच्छा बनाता है (एक उदाहरण के लिए यहां क्लिक करें)। मुझे आधार पर काम करने की ज़रूरत है और मुझे लगता है scales रंग ग्रेडिएंट बनाने के लिए भी इस्तेमाल किया जा सकता है लेकिन मैं इस पर निशान से गंभीर रूप से बंद हूं। मूल लक्ष्य एन रंगों का एक पैलेट उत्पन्न करता है जो x रंग से y रंग तक होता है। हालांकि समाधान को आधार में काम करने की जरूरत है। यह एक शुरुआती बिंदु था लेकिन एन इनपुट करने के लिए कोई जगह नहीं है।

 scale_colour_gradientn(colours=c("red", "blue"))

मुझे अच्छी तरह से पता है:

brewer.pal(8, "Spectral") 

से RColorBrewer। मैं इस तरह के दृष्टिकोण के लिए और अधिक देख रहा हूं ggplot2 ग्रेडियेंट्स को संभालता है जो कहता है कि मेरे पास ये दो रंग हैं और मुझे रास्ते में 15 रंग चाहिए। मैं उसे कैसे कर सकता हूँ?


76
2017-11-12 23:16


मूल


मुझे लगता है कि आपको इसकी ज़रूरत है तराजू पैकेज; सबसे नया ggplot2 संस्करण अंतर्निहित कोड के लिए इस पर निर्भर करते हैं। अर्थात। आपको जरूरत नहीं है ggplot2 तराजू का उपयोग करने के लिए, आपको बस इसकी आवश्यकता है तराजू पैकेज। कोई फर्क नहीं पड़ता कि कैसे कार्य करता है तराजू हालांकि काम करता है :-) - Gavin Simpson


जवाब:


colorRampPalette आपका मित्र यहां हो सकता है:

colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"

और यह दिखाने के लिए कि यह काम करता है:

plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

enter image description here


125
2017-11-12 23:21



8 सेकंड से पीटा +1! - mnel
@mnel - quickdraw जीत! ;-) - thelatemail
वह खूबसूरत है। - Tyler Rinker
ध्यान दें कि यदि आप विशेष रूप से पूर्व-मौजूदा पैलेट से मोहक हैं, उदा। brewer.pal(8, "Spectral"), आप परिणामस्वरूप वेक्टर के रंग दे सकते हैं colorRampPalette उस रैंप के साथ और अधिक रंग उत्पन्न करने के लिए। उदाहरण के लिए: colorRampPalette(brewer.pal(8, "Spectral"))। - jbaums
ब्लॉक में विकर्ण रेखाओं या आकृतियों के साथ रंग के बारे में क्या? @thelatemail - user3631848


पिछले जवाब पर विस्तार करने के लिए बस colorRampPaletteदो से अधिक रंग संभाल सकते हैं।

तो एक और विस्तारित "गर्मी मानचित्र" प्रकार के लिए देखो आप कर सकते हैं ....

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

परिणामी छवि:

enter image description here


38
2018-05-29 15:41



क्या मैं रंग में विकर्ण रेखा या आकार भी निर्दिष्ट कर सकता हूं? @jsol - user3631848
मुझे यह पैलेट पसंद है लेकिन रास्ता बहुत हरा और बहुत छोटा पीला है। क्या इसे ठीक करने के लिए एक रास्ता है? - Herman Toothrot


निम्नलिखित आज़माएं:

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

enter image description here


11
2018-02-26 16:04





उपर्युक्त उत्तर उपयोगी है लेकिन ग्राफ में, काले रंग के गहरे ग्रेडियेंट्स के बीच अंतर करना मुश्किल है। एक विकल्प मैंने पाया है कि निम्नानुसार भूरे रंग के ग्रेडिएंट का उपयोग करना है

palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

भूरे पैमाने पर अधिक जानकारी यहाँ। 

जोड़ा गया 

जब मैंने नीले और काले रंग के विभिन्न रंगों के लिए उपरोक्त कोड का उपयोग किया, तो ग्रेडियेंट स्पष्ट नहीं थे। heat.colors() अधिक उपयोगी लगता है।

इस दस्तावेज़ अधिक विस्तृत जानकारी और विकल्प है। पीडीएफ


6
2017-09-24 11:30



मुझे लगता है कि यह जवाब काले से सफेद के लिए बेहतर है लेकिन रंगों के लिए सामान्य नहीं है। इस मूल्यवान जानकारी को जोड़ने के लिए धन्यवाद। +1 - Tyler Rinker
एक लिंक जोड़ा गया जो रंगीन ग्रेडियेंट्स और रंगों के लिए बेहतर विकल्प प्रदान करता है जो रंग और बी और डब्ल्यू दोनों में काम करते हैं। - Anusha
अच्छा लिंक! बहुत सूचनाप्रद। - Tyler Rinker
क्या इस लिंक में कोई अपडेट है .. 1/2015 तक, यह टूटा हुआ है। - David DelMonte
@ डेविड डेलमोन्टे - web.archive.org/web/20141111182737/http://www.stat.tamu.edu/... पहले हमेशा archive.org की जांच करें। - thelatemail