2013-07-23 7 views
13

मैं एक गर्मी के उत्पादन के लिए एक समूह समूह के लॉग 2-गुना परिवर्तन दिखाते हुए एक हीटमैप उत्पन्न करने के लिए जीप्लॉट का उपयोग कर रहा हूं।आर में heatmap.2 रंग सीमा कैसे बदलें?

heatmap.2(as.matrix(SeqCountTable), col=redgreen(75), 
      density.info="none", trace="none", dendrogram=c("row"), 
      symm=F,symkey=T,symbreaks=T, scale="none") 

मैं उत्पादन असली गुना परिवर्तन मूल्यों (यानी, गैर पंक्ति-जेड स्कोर) के साथ एक गर्मी नक्शा है जो कि मैं क्या कर रहा हूँ के बाद, लाल काले-ग्रीन रंग योजना है कि में: निम्नलिखित कोड के साथ हर जीवविज्ञानी के पसंदीदा!

http://i.stack.imgur.com/uhFbP.jpg

log2 गुना परिवर्तन की वास्तविक सीमा, है -3/+ 7 -2/-1 और + 1/2 रेंज में कई मूल्यों, जो के रूप में गहरे लाल/हरी दिखाई साथ (क्रमशः)। यह पूरे हीटमैप को बहुत अंधेरा बनाता है और व्याख्या करना बहुत मुश्किल है।

  • क्या इसे कम रैखिक बनाने के लिए रंग ढाल को स्कूइंग करने का कोई तरीका है? यही है, ताकि काले से काफी चमकदार ढाल एक छोटी सी सीमा पर हो?
  • और/या रंग सीमा को विषम होने के लिए बदलें, यानी, -3/+ 7 से चलाने के लिए, डेटा के रूप में -7/7 7 के बजाए, वर्तमान में स्केल के रूप में, काला अभी भी शून्य पर केंद्रित है?
+6

कृपया कुछ भी है कि किसी और को दिखाया जा सकता है माना जाता है में लाल-हरे योजना का उपयोग नहीं करते। 8% पुरुष और 0.5% महिलाएं रंग की हानि से ग्रस्त हैं और आपके हीटमैप को पढ़ने में परेशानी होगी। http: // designshack।नेट/आलेख/अभिगम्यता/टिप्स-टू-डिज़ाइनिंग-टू-कलरब्लिंड-उपयोगकर्ता/ – January

उत्तर

11

आप RColorBrewer पैकेज

my_palette <- colorRampPalette(c("green", "black", "red"))(n = 1000) 

का उपयोग कर अपनी खुद की रंग पैलेट बना सकते हैं और देखते हैं कि यह कैसे की तरह दिखता है की कोशिश कर सकते। लेकिन मुझे लगता है कि अगर आप वास्तव में "बीच" में काले रखना चाहते हैं तो केवल आपके स्केलिंग में मदद मिलेगी। आप बस redgreen()

मेरा सुझाव है कि आप RColorBrewer package की जाँच के बजाय my_palette उपयोग कर सकते हैं, वे बहुत अच्छा में निर्मित पट्टियाँ है, और इंटरैक्टिव website for colorbrewer देखते हैं।

+0

केवल आपके कोड के साथ, रंग कुंजी खाली रहती है – Woeitg

+0

यह मेरे लिए फिर से काम करता है, आपको इस रंग पैलेट को फ़ंक्शन तर्क के रूप में उपयोग करना होगा पाठ्यक्रम ('col = my_palette') – Sebastian

11

मैं बस प्रत्येक रंग, उदा की श्रेणी निर्दिष्ट करने के गलत

symm=F,symkey=F,symbreaks=T, scale="none" 

टूटता तर्क के साथ colorRampPalette के साथ रंग मुद्दा हल करने के लिए symkey तर्क बदलकर असममित हो रंग श्रेणी मिला

colors = c(seq(-3,-2,length=100),seq(-2,0.5,length=100),seq(0.5,6,length=100)) 

my_palette <- colorRampPalette(c("red", "black", "green"))(n = 299) 

कुल मिलाकर

heatmap.2(as.matrix(SeqCountTable), col=my_palette, 
    breaks=colors, density.info="none", trace="none", 
     dendrogram=c("row"), symm=F,symkey=F,symbreaks=T, scale="none") 
+0

जो मैं भ्रमित कर रहा हूं वह यह है कि विभिन्न रंगों के लिए गैर-बराबर ब्रेक बदलने के बाद, हीटमैप परिणाम को समझाना मुश्किल होगा, है ना? चूंकि, वे समान रूप से निरंतर नहीं हैं? –

+0

एक और समस्या यह है कि, यदि आप इस तरह के रंग सेट करते हैं, तो कुंजी हमेशा असामान्य लगती है (हीटमैप आकृति के ऊपरी हिस्से में नहीं दिखाया जाता है)। क्या आपको पहले ऐसी समस्या मिलती है? –

0

मैं तुम्हें symbreaks = FALSE कि विषम रंग तराजू के लिए अनुमति चाहिए निर्धारित करने की आवश्यकता है।

0

यहाँ का उपयोग नहीं कर heatmap.2 उन लोगों के लिए एक और विकल्प है (aheatmap अच्छा है!)

, आपके इनपुट मैट्रिक्स की अधिकतम मिनट से 100 मूल्यों की एक अनुक्रमिक वेक्टर करें कि में 0 के लिए मूल्य करीबी मिल जाए, के दो वेक्टर बनाने करने के लिए और वांछित मध्य से रंग, गठबंधन और उन्हें इस्तेमाल:

breaks <- seq(from=min(range(inputMatrix)), to=max(range(inputMatrix)), length.out=100) 
midpoint <- which.min(abs(breaks - 0)) 
rampCol1 <- colorRampPalette(c("forestgreen", "darkgreen", "black"))(midpoint) 
rampCol2 <- colorRampPalette(c("black", "darkred", "red"))(100-(midpoint+1)) 
rampCols <- c(rampCol1,rampCol2) 
संबंधित मुद्दे