2012-11-13 25 views
5

में विभिन्न रंगों के साथ साजिश मैं एक हिस्टोग्राम जैसी शैली में वेक्टर data प्लॉट करने की कोशिश कर रहा हूं। यह हमेशा आसान है, क्योंकि plot(data, type="h") वही करता है जो मैं चाहता हूं। हालांकि, रंग के साथ एक समस्या है। मेरे वेक्टर data इस तरह दिखता है:हिस्टोग्राम-जैसी साजिश आर

data = c(1,2,2,3,1,1,2,3,1,2,2,3, ...) 

क्या मैं देखना चाहता हूँ, कि प्रत्येक 1 एक रंग में साजिश रची है, एक अलग रंग में प्रत्येक 2 और प्रत्येक 3 वैसे ही है। मुझे लगता है कि प्राप्त करने के लिए

plot(data, type="h", col=c("red","blue","green") 

साथ करने की कोशिश की, लेकिन यह, आर रंग वेक्टर से अधिक पाशन के साथ विफल रहा है, दूसरा नीले, तीसरे हरे, चौथे लाल फिर से और इतने पर इतना है कि पहले बार लाल था।

मैं बहुत, सामान्य समाधान में interessted हूँ क्योंकि मेरे data वैक्टर हमेशा संख्या 1, 2 और 3 से मिलकर नहीं है। ऐसे कई मामले हैं जिनमें वेक्टर 1 से 6 तक की संख्या रखते हैं।

क्या कोई इस समस्या को हल करने के बारे में जानता है?

उत्तर

11

आप इस तरह, एक ही लंबाई के रंग का एक वेक्टर बनाने के लिए की आवश्यकता होगी:

data = c(1,2,2,3,1,1,2,3,1,2,2,3) 
colors = c("red","blue","green") 
plot(data, type="h", col=colors[data]) 

यह काम करता है क्योंकि colors[data] लगता है:

print(colors[data]) 
# [1] "red" "blue" "blue" "green" "red" "red" "blue" "green" "red" 
# [10] "blue" "blue" "green" 
+0

मैं इसे डेटा की एक श्रृंखला पर कैसे लागू कर सकता हूं? उदाहरण के लिए, मैं कुछ भी ऐसा करना चाहता हूं जो -100 से 100 के बीच लाल हो और बाकी सब कुछ नीला हो? – user1007742

+0

@ user1007742: इसे विभाजित करने के लिए 'कट' का उपयोग करें: यानी 'mydatacut = cut (x, c (-Inf, -100, 100, Inf)) '। यह तीन स्तरों के साथ एक कारक बनाएगा फिर आप 'रंग [as.numeric (mydatacut)] कर सकते हैं, जहां कारक है, उदाहरण के लिए,' सी ("नीला", "लाल", "नीला") ' –

6

सामान्य विधि के लिए इस प्रयास करें:

data = c(1,2,2,3,1,1,2,3,1,2,2,3,4,5,6,7,12,3) 
colors = rainbow(length(unique(data))) 
plot(data, type="h", col=colors[data]) 
0
colors = rainbow(length(unique(data))); 
hist(data, col=colors[data]) 

श्रीमान का उपयोग कर। लैपल्मे का डेटा (ऊपर)

संबंधित मुद्दे