रंग 1 और रंग 2 से लेकर n रंगों का क्रम


108

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

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

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

brewer.pal(8, "Spectral") 

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


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

1
ऑफ-टॉपिक चूंकि आपने baseविशेष रूप से अनुरोध किया था , लेकिन मुझे लगता है कि colourvalues( सीआरएएन पर भी ) विशेष रूप से एक ढाल के लिए मान मैपिंग के लिए सुविधाजनक है। यह भी बहुत हल्का है (पर निर्भर करता है Rcpp)।
माइकलचिरिको

@MichaelChirico विषय से अलग नहीं है, मेरा मतलब यह था कि मुझे बेस प्लॉटिंग का उपयोग करने की आवश्यकता थी क्योंकि मैं जिस पैकेज का उपयोग कर रहा था वह ग्रिड के बजाय बेस में लिखा गया था (मुझे लगता है कि वर्डक्लाउड)। शायद उत्तर के रूप में पोस्ट करें?
टायलर रिंकर

जवाबों:


179

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)

यहां छवि विवरण दर्ज करें


14
ध्यान दें कि यदि आप विशेष रूप से पहले से मौजूद पैलेट से आसक्त हैं, उदाहरण के लिए brewer.pal(8, "Spectral"), आप colorRampPaletteउस रैंप के साथ और अधिक रंग उत्पन्न करने के लिए रंगों का परिणामी वेक्टर दे सकते हैं । उदाहरण के लिए colorRampPalette(brewer.pal(8, "Spectral")):।
jbaums

ब्लॉक में विकर्ण लाइनों या आकृतियों के साथ रंग के बारे में क्या? @thelatemail
user3631848

50

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

तो अधिक विस्तारित "हीट मैप" प्रकार के लिए आप देख सकते हैं ....

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

परिणामी छवि:

यहां छवि विवरण दर्ज करें


क्या मैं रंग में विकर्ण रेखाओं या आकृतियों को भी निर्दिष्ट कर सकता हूं? @ जसोल
user3631848

मुझे यह पैलेट पसंद है लेकिन बहुत ज्यादा हरा और बहुत कम पीला है। क्या इसे ठीक करने के लिए एक रास्ता है?
हरमन टूथ्रोट

1
किसी और के लिए जोड़ना जो "स्प्रिंगग्रीन" या "रॉयलब्लू" जैसे विकल्प को देखने की उम्मीद नहीं कर रहा था। उपयोग करने के लिए उपलब्ध सभी रंगों को चलाकर सूची के रूप में वापस किया जा सकता है: रंग ()।
जद्दकी

20

निम्नलिखित प्रयास करें:

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)

यहां छवि विवरण दर्ज करें


इस फ़ंक्शन को R आधार में एक डिफ़ॉल्ट के रूप में जोड़ा जाना चाहिए!
साइमन सी।

7

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

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

ग्रे स्केल पर अधिक जानकारी यहाँ।

जोड़ा गया

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

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


2
मुझे लगता है कि यह उत्तर काले से सफेद के लिए बेहतर है लेकिन रंगों के लिए सामान्य नहीं है। इस बहुमूल्य जानकारी को जोड़ने के लिए धन्यवाद। +1
टायलर रिंकर

एक लिंक जोड़ा गया है जो रंग ढ़ाल और hues के लिए बेहतर विकल्प प्रदान करता है जो रंग और B और W दोनों में काम करता है।
अनुषा

@DavidDelMonte मैं फ़ाइल की सहेजी गई प्रतिलिपि हो सकता है लेकिन अद्यतन लिंक नहीं। हालांकि यह सुनिश्चित नहीं है कि इसे कहां अपलोड करना है।
अनुशा

2
@DavidDelMonte - web.archive.org/web/20141111182737/http://www.stat.tamu.edu/… हमेशा चेक करें।
Thelatemail
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.