2014-12-04 9 views
6

में एक पहलू साजिश की प्रत्येक पंक्ति के लिए वाई धुरी सीमा बदलें मेरे पास 5 कॉलम पहलू साजिश द्वारा 3 पंक्तियां हैं। प्रत्येक पंक्ति डेटा दिखाती है जो विभिन्न श्रेणियों में फैली हुई है। मेरे डेटा को सही तरीके से प्रदर्शित करने के लिए, सबकुछ दिखाया गया है, मैं वाई अक्ष की सीमा निर्धारित नहीं करता हूं।ggplot2

require(reshape2) 
library(ggplot2) 
library(RColorBrewer) 

fileName = paste("./data_test.csv", sep = "") 

## data available here: https://dl.dropboxusercontent.com/u/73950/data_test.csv 

mydata = read.csv(fileName,sep=",", header=TRUE) 

dataM = melt(mydata,c("id")) 
dataM = cbind(dataM, 
      colsplit(dataM$variable, 
        pattern = "_", 
        names = c("Network_model", "order", "category"))) 
dataM$variable <- NULL 
dataM <- dcast(dataM, ... ~ category, value.var = "value") 
dataM$minCut <- NULL 
dataM$nbr_communities <- NULL 
dataM$mean_community_size <- NULL 
dataM$density <- NULL 

my_palette <- colorRampPalette(rev(brewer.pal(11, "Spectral"))) 

dataM = melt(dataM, id.vars = c("Network_model", "order", "nodesRemoved", "id")) 

my_palette = c(brewer.pal(5, "Blues")[c(4)], brewer.pal(5, "Set1")[c(3)]) 

ggplot(dataM, aes(x= nodesRemoved ,y= value, group= order, color= order)) + 
    geom_point(size = .6,alpha = .15,position="jitter") + ## increased size 
    stat_smooth(se = FALSE, size = .5, alpha = .1, method = "loess") + 
    scale_color_manual(values=my_palette) + 
    theme_bw() + 
    theme(plot.background = element_blank(), 
     axis.line = element_blank(), 
     legend.key = element_blank(), 
     legend.title = element_blank(), 
     axis.text.x = element_text(size = 8), 
     axis.text.y = element_text(size = 8) 
     ) + 
    scale_y_continuous("Value") + 
    scale_x_continuous("Time", limits=c(0, 100)) + 

    facet_grid(variable ~ Network_model,scales="free") 

कौन इस का उत्पादन:

यहाँ मेरी कोड है

enter image description here

अब, मैं, तीन पंक्तियों में से प्रत्येक के लिए करने के लिए चुनिंदा सीमाएं सेट करना चाहते हैं ताकि पहली पंक्ति सीमा = सी (1.9, 3) है, दूसरा सीमा = सी (0, 1) है और तीसरा सीमा = सी (.3, .7) है।

मैं इसे ggplot2 में faceting में कैसे प्राप्त कर सकता हूं?

+1

यह पहलुओं के साथ संभव हो सकता है (मैं शुरू में अंक बड़ा अपराधियों अधिक स्पष्ट रूप से देखने के लिए किया जाता), लेकिन यह आसान नहीं होगा। अगर मैं तुम थे, तो मैं तीन जीजीप्लॉट बनाउंगा, प्रत्येक पंक्ति के लिए एक। फिर आप वाई अक्ष की सीमा को पारंपरिक तरीके से सेट कर सकते हैं, फिर पंक्तियों को एक साथ चिपकाएं, उदाहरण के लिए, 'grid.arrange'। (मुझे संदेह है कि जब तक आप अपना उदाहरण पुन: उत्पन्न नहीं करेंगे तब तक आपको कोड के साथ कोई जवाब नहीं मिलेगा।) – Gregor

+1

हालांकि, यदि आप सीमा निर्धारित करने के लिए 'ggplot' के साथ ठीक हैं, तो' scales = "free_y" ', 'scales = "मुक्त" '। अपने डेटा को देखे बिना यह अनुमान लगाना असंभव है कि यह वही है जो आप खोज रहे हैं। – Gregor

+0

धन्यवाद ग्रेगोर, मैंने डेटासेट और पूर्ण कोड जोड़ा! चीयर्स! – Rodolphe

उत्तर

3

मुझे लगता है कि आपका सबसे अच्छा विकल्प इसे प्लॉट करने से पहले डेटा को ट्रिम करना होगा, उदा। dplyr साथ,

library(dplyr) 
limits <- data.frame(variable = levels(dataM$variable), 
        min = c(1.9,0,0.3), 
        max = c(3,1,0.7)) 
dataC <- inner_join(dataM, limits) %>% filter(value > min, value < max) 

last_plot() %+% dataC 

enter image description here

+0

शानदार, यह बहुत अच्छा काम करता है, बहुत बैपटिस्ट धन्यवाद! – Rodolphe