2014-07-24 10 views
5

मैं निम्नलिखित डाटासेट है:मैं अपने एक्स-अक्ष को ggplot में एकाधिक भूखंडों में कैसे विभाजित करूं?

df <- as.data.frame(cbind(Position = c(1,2,3,4,5,6,7,8,9,10), 
    Value = c(11.31, 10.39, 9.50, 6.61, 5.41, 
    3.88, 3.81, 1.25, 0.70,10.41))) 

मैं,, स्थिति के साथ 1-3 को महत्व देता है एक बार साजिश के रूप में इस साजिश चाहते हैं 4-6, 7-9, अलग भूखंडों में 10 से नीचे यानी 4 अलग भूखंडों एक दूसरे। Ggplot में ऐसा करने का कोई आसान तरीका है?

संपादित करें: मैं खाली स्थिति के बिना इसे प्राप्त करना चाहता हूं।

चीयर्स, यूसुफ

उत्तर

1

यह आपके लिए क्या देख रहे हैं?

df <- transform(df, Position=as.factor(Position), 
    group=as.factor(findInterval(Position, c(1, 4, 7, 10)))) 

ggplot(df, aes(x=Position, y=Value, fill=Position)) + 
    geom_bar(stat='identity') + 
    facet_grid(group ~ .) 

enter image description here

+0

धन्यवाद मैथ्यू, मैं स्पष्ट रूप से अपने आप को स्पष्ट रूप से पर्याप्त नहीं समझा था। मैं प्रत्येक पहलू में खाली पदों से बचना चाहता था। – blJOg

+3

@blJOg, आप उपरोक्त कोड को 'facet_grid (। ~ समूह, स्केल = "मुक्त")' –

+0

'facet_grid (। ~ समूह, स्केल = "मुक्त") में लगभग समायोजित कर सकते हैं' लगभग काम करता है लेकिन पहलू 4 में एक बहुत विस्तृत बार है । – blJOg

2

आप इस तरह, कस्टम अंतराल परिभाषित करने के लिए पैकेज कार की पुनःकूटित समारोह जो practicle है उपयोग करने के लिए चाहते हो सकता है:

require(car) 
require(ggplot2) 
df['series']<-recode(df$Position, "1:3='1-3';4:6='4-6';7:9='7-9';10='10'") 
ggplot(df, aes(x=Position, y=Value))+geom_bar(stat='identity')+facet_grid(~series) 

enter image description here

+0

धन्यवाद agenis लेकिन मैं खाली पदों से बचने के लिए चाहता था। क्या यह संभव है? – blJOg

7

सबसे आसान तरीका होगा facet_grid() का उपयोग करने के लिए:

Faceted plot

ggplot(df, aes(x=Position, y=Value))+ 
    geom_bar(stat='identity')+ 
    facet_grid(~group,scales='free') 

वरना, अधिक नियंत्रण के लिए, आपको व्यक्तिगत भूखंडों & बनाने gridExtra पैकेज का उपयोग कर उन्हें गठबंधन करने के लिए कोशिश कर सकते। Combined Plot

#Data 
enter df <- as.data.frame(cbind(Position = c(1,2,3,4,5,6,7,8,9,10), 
         Value = c(11.31, 10.39, 9.50, 6.61, 5.41, 
           3.88, 3.81, 1.25, 0.70,10.41))) 
#Grouping 
df$group<-cut(df$Position,breaks=c(0,3,6,9,100),c('0-3','4-6','7-9','10')) 

#Creating Individual Plots 
p1=ggplot(subset(df,df$group=='0-3'), aes(x=Position, y=Value))+ 
    geom_bar(stat='identity')+ 
    ggtitle('0-3') 

p2=ggplot(subset(df,df$group=='4-6'), aes(x=Position, y=Value))+ 
    geom_bar(stat='identity')+ 
    ggtitle('4-6') 

p3=ggplot(subset(df,df$group=='7-9'), aes(x=Position, y=Value))+ 
    geom_bar(stat='identity')+ 
    ggtitle('7-9') 

p4=ggplot(subset(df,df$group=='10'), aes(x=factor(Position), y=Value,width=Value/10))+ 
    geom_bar(stat='identity',width=0.7)+ 
    ggtitle('10')+ 
    xlab(label='Position') 

grid.arrange(p1,p2,p3,p4,ncol=2,nrow=2,main='Plot') 
संबंधित मुद्दे