2011-09-27 20 views
10

के साथ अलग-अलग लाइनों के रूप में एकाधिक वाई मानों को साजिश करने का सही तरीका मैं अक्सर एक ऐसे मुद्दे में चलाता हूं जहां मेरे पास एक डेटा फ्रेम होता है जिसमें एक एक्स एक्स चर, एक या अधिक पहलू चर, और कई अलग-अलग चर होते हैं। कभी-कभी मैं अलग-अलग वाई चरों को अलग-अलग लाइनों के रूप में प्लॉट करना चाहता हूं। लेकिन यह हमेशा केवल एक सबसेट है जो मैं चाहता हूं। मैंने कॉलम के रूप में "वेरिएबल" प्राप्त करने के लिए पिघलाने का प्रयास किया है और इसका उपयोग किया है, और यह काम करता है अगर मैं मूल डेटासेट में मौजूद प्रत्येक कॉलम चाहता हूं। आमतौर पर मैं नहीं करता हूं।ggplot2

अभी मैं चीजों को वास्तव में ऐसा कर रहा हूं जैसे ऐसा लगता है। mtcars साथ मान लीजिए मैं mpg के खिलाफ साजिश disp, एचपी, और भार हैं:

ggplot(mtcars, aes(x=mpg)) + 
    geom_line(aes(y=disp, color="disp")) + 
    geom_line(aes(y=hp, color="hp")) + 
    geom_line(aes(y=wt, color="wt")) 

यह वास्तव में निरर्थक लगता है। अगर मैं पहले mtcars पिघलता हूं, तो सभी चर पिघल जाएंगे, और फिर मैं उन अन्य चरों को साजिश करने के लिए हवादार हो जाऊंगा जो मैं नहीं चाहता हूं।

क्या किसी के पास ऐसा करने का एक अच्छा तरीका है?

उत्तर

8

ggplot हमेशा लंबे प्रारूप dataframe पसंद है, तो यह melt:

mtcars.long <- melt(mtcars, id = "mpg", measure = c("disp", "hp", "wt")) 
ggplot(mtcars.long, aes(mpg, value, colour = variable)) + geom_line() 
+0

तो उपाय हिस्सा बात मैं अनदेखी किया गया है। मुझे लगता है कि यह सही तरीका है, जब आप अंतःक्रियात्मक खोज कर रहे हैं तो थोड़ा परेशान होना। –

+2

@ क्रिस - वैकल्पिक रूप से, आपके द्वारा सुझाए गए पूरे डेटा.फ्रेम को पिघलाएं और फिर 'ggplot()' कॉल में डेटा तर्क के रूप में 'subset() 'का उपयोग करें यदि आप अलग-अलग चीजों की साजिश करने की योजना बना रहे हैं और फिर' melt' – Chase