2016-01-06 7 views
11

के साथ geom_dotplot का उपयोग करते समय कोई भी मुफ्त धुरी स्केल नहीं है मैं facet_grid का उपयोग करके डॉट प्लॉट की एक श्रृंखला उत्पन्न करने का प्रयास कर रहा हूं। ऐसा करने में, मैंने देखा है कि geom_dotplot facet_grid के scales = "free_y" तर्क का जवाब देने के लिए प्रकट नहीं होता है।ggplot2: facet_grid

require(ggplot2) 

#Example data 
set.seed(3) 
df = data.frame(Gene = rep(c("a", "b", "c", "d"), each=20), 
       ToD = rep(c("Morning", "Evening"), times = 40), 
       Expression = c(runif(20, min=0, max=10), 
           runif(20, min=0, max=1), 
           runif(20, min=0, max=1000), 
           runif(20, min=0, max=100))) 

#Box plots of example data 
ggplot(df, aes(x = ToD, y = Expression)) + 
    geom_boxplot() + 
    facet_grid(Gene ~ ., scales = "free_y") 

#Dot plots of example data 
ggplot(df, aes(x = ToD, y = Expression)) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole") + 
    facet_grid(Gene ~ ., scales = "free_y") 

और यहाँ आर और ggplot2 के संस्करणों मैं वर्तमान में उपयोग कर रहा हूँ कर रहे हैं::

यहाँ कुछ उदाहरण कोड है

  • आर संस्करण 3.2.2 (2015/08/14)
  • ggplot2_1.0.1.9003

तो जब मैं बॉक्स भूखंडों उत्पन्न करते हैं, सब कुछ y अक्षों के साथ की उम्मीद के रूप में काम करता है प्रत्येक पहलू पंक्ति के लिए उचित रूप से स्केलिंग:

Dot plots of test data

मैं एक ज्ञात बग के बारे में पढ़ा है:

Box plots of test data

हालांकि, डॉट भूखंडों हर पहलू पंक्ति के लिए एक ही y- अक्ष तराजू बनाए रखने के ggplot2 में जहां coord_flip और facet_grid मुक्त स्केल निर्दिष्ट करते समय एक साथ काम नहीं करते हैं। क्या यह वही समस्या से संबंधित है?

जबकि मैं प्रत्येक प्लॉट को अलग-अलग उत्पन्न कर सकता हूं और फिर उन्हें ग्रिड.रेंज के साथ जोड़ सकता हूं, यह मेरे उद्देश्यों के लिए बोझिल है। मैं इन डॉट प्लॉट को अन्य पहलुओं वाले प्लॉट्स के साथ लाइन करने की कोशिश कर रहा हूं, और मैं भी उन सभी को पुन: उत्पन्न करने की आवश्यकता से बचना चाहता हूं जो grid.arrange का उपयोग करते हैं। कोई विचार?

किसी भी मदद के लिए धन्यवाद जो आप दे सकते हैं और कृपया मुझे बताएं कि क्या मैं और स्पष्टीकरण प्रदान कर सकता हूं।

+0

मैं 'ggplot2_1.0.1' और' आर संस्करण 3.2.2 के साथ त्रुटि को दोहराने करने में असमर्थ था (2015-08-14) ', मेरे लिए ठीक काम करता है – mlegge

+0

मैंने अभी ggplot2_2.0.0 को अपडेट किया है और मैं अभी भी एक ही समस्या में चल रहा हूं। मुझे लगता है मुझे डाउनग्रेड करने की आवश्यकता हो सकती है? –

+2

मैं 'ggplot2_2.0.0' और उसी आर संस्करण – mlegge

उत्तर

3

मैं ?geom_dotplot पर दस्तावेज़ पढ़ रहा हूं। जाहिर है, बिनपोशन-विकल्प "सब" (सभी डेटा एकत्र किए गए) या "bygroup" पर सेट किया जा सकता है; डिफ़ॉल्ट। इस प्रकार, दोनों समूह के रूप में और पहलुओं के रूप में जीन का उपयोग कर, binpositions भिन्न हो सकते हैं और कम से कम मुक्त y- अक्ष लौटे:

ggplot(df, aes(x = ToD, y = Expression, group=Gene)) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") + 
    facet_grid(Gene ~ ., scales = "free_y") 

enter image description here

लेकिन अब x- अक्ष पर समूहीकरण गायब हो गया। शायद एक बेहतर समाधान है, लेकिन जीन और टॉड के बीच बातचीत से समूहीकरण इसे हल करने लग रहा था:

ggplot(df, aes(x = ToD, y = Expression, group=interaction(Gene,ToD))) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") + 
    facet_grid(Gene ~ ., scales = "free_y") 

enter image description here

+0

दिलचस्प। मैं अभी भी सोच रहा हूं कि यह geom_boxplot और facet_grid कार्यों के बीच इच्छित बातचीत है (इस मामले में, यह अत्यधिक जटिल लगता है), या यदि यह एक बग है। किसी भी तरह से, आपका समाधान मेरी वर्तमान समस्या हल करता है। जवाब देने से पहले मैं इसे एक या दो दिन के लिए खोल दूंगा, ताकि किसी और को योगदान देने से हतोत्साहित न किया जाए। धन्यवाद। –

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