2016-02-22 7 views
5

का उपयोग करके प्रत्येक पहलू के भीतर पूरे डेटा को साजिश कर रहा है। मैं प्रत्येक डेटासेट के लिए लाइन ग्राफ़ और facet_wrap के लिए प्लॉट प्लॉट करने की कोशिश कर रहा हूं। जो मुझे पसंद है वह हल्का भूरा, पारदर्शी या कुछ, पृष्ठभूमि में सभी डेटासेट में है।facet_wrap और ggplot2

df <- data.frame(id=rep(letters[1:5], each=10), 
       x=seq(10), 
       y=runif(50)) 

ggplot(df, aes(x,y, group=id)) + 
    geom_line() + 
    facet_wrap(~ id) 

enter image description here

यह ग्राफ, कितनी दूर मैं है, लेकिन मैं प्रत्येक ग्राफ में अन्य सभी लापता 4 लाइनों के साथ-साथ ... किसी भी तरह से मैं facet_wrap इस्तेमाल करने की कोशिश में है करने के लिए प्यार होता रहा केवल एक पंक्ति का डेटा प्राप्त करें।

मैं जो अपेक्षा करता हूं वह प्रत्येक पहलू के लिए ऐसा कुछ है।

ggplot(df, aes(x,y, group=id)) + 
    geom_line() + 
    geom_line(data=df[1:10,], aes(x,y, group=id), size=5) 

enter image description here

उत्तर

9

यहाँ एक और तरीका है:

ggplot(df, aes(x,y, group=id)) + 
    geom_line(data=df[,2:4], aes(x=x, y=y, group=id2), colour="grey") + 
    geom_line() + 
    facet_wrap(~ id) 

enter image description here

+0

यह शानदार है! मैंने वास्तव में इस तरह से एक geom में नया डेटा जोड़ने के बारे में नहीं सोचा था, और सभी अवलोकनों के लिए सभी जानकारी के साथ 'एक पंक्ति' बहुत कोशिश की। – Heroka

+0

मुझे यह समाधान @Heroka से भी अधिक पसंद है। मुझे अभी भी एक मिनट सोचना है कि यह अच्छी तरह से क्यों काम करता है लेकिन मुझे लगता है कि यह मेरी समस्या को आसानी से हल करता है ... – drmariod

+0

धन्यवाद :) हालांकि मुझे यकीन है कि यहां बहुत सारे रचनात्मक तरीके हैं जो यहां काम करते हैं। – beetroot

3

यहाँ एक दृष्टिकोण है। यह बड़े डेटासेट के लिए उपयुक्त नहीं हो सकता है, क्योंकि हम डेटा number_of_facets-समय को दोहराते हैं।

सबसे पहले, हम इस वांछित डेटाफ्रेम को बनाने के लिए कुछ डेटा-wrangling करते हैं। df $ obs_id < - 1: Nrow (DF) प्रत्येक अवलोकन

#new data with unique ID's and 'true' facets 
df2 <- expand.grid(true_facet=unique(df$id), obs_id=1:nrow(df)) 

#merge them 
dat <- merge(df,df2,by="obs_id",all=T) 

के लिए #unique आईडी फिर, हम एक झंडा 'सही' faceted चर को परिभाषित करने बनाते हैं, और अग्रभूमि से पृष्ठभूमि विचार करने के लिए।

dat$col_flag <- dat$true_facet == dat$id 

अब, साजिश आसान है। मैंने तराजू के बजाय दो बार geom_line का उपयोग किया है, क्योंकि यह ऑर्डरिंग को ठीक करने की कोशिश करने से आसान था (जिससे भूरे रंग के नीचे काले रंग का प्लॉट किया जाएगा)।

प्रथम आईडी में एक नया स्तंभ समान जोड़ें::

df$id2 <- df$id 

फिर मूल आईडी स्तंभ के बिना df के आधार पर एक और geom_line जोड़ने

p1 <- ggplot(dat, aes(x=x,y=y, group=id))+ 
    geom_line(color="grey")+ 
    geom_line(dat=dat[dat$col_flag,],size=2,color="black")+ 
    facet_wrap(~true_facet) 

enter image description here

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