2010-06-07 14 views
6

मैं इस समस्याggplot2 heatmap: लेबल ऑर्डर को कैसे सुरक्षित रखें?

http://biostar.stackexchange.com/questions/921/how-to-draw-a-csv-data-file-as-a-heatmap-using-numpy-and-matplotlib

में casbon के समाधान निम्नलिखित csv डेटा का उपयोग कर ggplot2 में हीटमैप प्लॉट करने के लिए कोशिश कर रहा हूँ एक्स-लेबल फिर से तरह करने के लिए स्वयं की कोशिश है। उदाहरण के लिए, यदि मैं उस उदाहरण डेटा में लेबल COG0002 और COG0001 को स्वैप करता हूं, तो एक्स-लेबल अभी भी सॉर्ट ऑर्डर (cog0001, cog0002, cog0003 .... cog0008) में बाहर आ जाता है।

क्या इसे रोकने के लिए वैसे भी है? मैं चाहता हूँ करने के लिए इसे

धन्यवाद

पीपी

+0

नीचे अच्छे उत्तर हैं। यहां एक सावधानी बरतनी है, इसे देखने में आप 'आदेशित कारक' में आ सकते हैं। इसका उपयोग न करें जबतक कि आप नहीं जानते कि आप क्या कर रहे हैं। किसी विशेष क्रम में स्तर डालना और आदेशित कारक का उपयोग करना एक ही बात नहीं है। उदाहरण के लिए, आदेशित कारक कुछ मॉडलिंग सॉफ़्टवेयर को उपचार प्रभावों के बजाय बहुपद के लिए डिफ़ॉल्ट रूप से कारण बनेंगे। – John

उत्तर

4

आप csv फ़ाइल से सीधे आदेश रखना चाहते हैं:

foomelt$COG <- factor(foomelt$COG, levels = as.character(foo[[1]])) 
+1

इस मामले में कोई समस्या नहीं है, लेकिन डुप्लिकेट प्रविष्टियों के मामले में 'अद्वितीय (as.character (foo [[1]]) होना चाहिए। – Marek

2

आप की साजिश रचने से पहले कारक स्तरों को पुन: क्रम कोशिश की csv फ़ाइल में के रूप में आदेश दिया जा करने के लिए? उदा।

foomelt$COG = factor(foomelt$COG,levels(foomelt$COG)[c(2,1,3:8)]) 

(मैं अभी की कोशिश नहीं कर सकते, तो मुझे यकीन है कि यह काम करता है नहीं किया जा सकता)

+0

मुझे नहीं लगता कि मैं मैन्युअल रूप से ऑर्डर कर सकता हूं क्योंकि मेरे डेटा में लगभग 100 और अधिक बिंदु है। –

5

यदि मुझे याद है, डिफ़ॉल्ट स्तर तर्क के साथ कारक (x) को कॉल करते समय, स्तर स्तर = क्रम (अद्वितीय (x)) के रूप में सेट होते हैं।

आप स्तर = अद्वितीय (x) सेट करके इस क्रिया को ओवरराइड कर सकते हैं।

उदाहरण के लिए:

set.seed(1) 
x = sample(letters, 100, replace = TRUE) 
head(x, 5) 

[1] "जी" "j" "ओ" "x" "f"

levels(factor(x)) 

[1] "एक" "बी" "ग "" डी "" ई "" एफ "" जी "" एच "" मैं "" जे "" के "" एल "" एम "" एन "" ओ "" पी "" क्यू "" आर "" एस "

[20] "टी" "यू" "वी" "डब्ल्यू" "x" "y" "z"

levels(factor(x, levels = unique(x))) 

[1] "जी" "जे" "ओ" "एक्स" "एफ" "वाई" "आर" "क्यू" "बी" "ई" "यू" "एम" "एस" "जे" "डी" "कश्मीर" "एक" "डब्ल्यू" "मैं"

[20] "पी" "वी" "सी" "n" "टी" "l" "h"

आप देख सकते हैं कि स्थापित करने का स्तर = अद्वितीय (एक्स) डेटा में घटना के क्रम को बरकरार रखता है।

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