2013-07-27 7 views
5

क्या किसी को पता है कि ggplot में बारप्लॉट से शून्य मानों को बाहर करना संभव है?एक ggplot barplot से शून्य मान बहिष्कृत करें?

मैं एक डाटासेट कि अनुपात इस प्रकार शामिल है:

X5employf  prop X5employff 
1 increase 0.02272727   
2 increase 0.59090909   1 
3 increase 0.02272727 1 and 8 
4 increase 0.02272727   2 
5 increase 0.34090909   3 
6 increase 0.00000000   4 
7 increase 0.00000000   5 
8 increase 0.00000000   6 
9 increase 0.00000000 6 and 7 
10 increase 0.00000000 6 and 7 
11 increase 0.00000000   7 
12 increase 0.00000000   8 
13 decrease 0.00000000   
14 decrease 0.00000000   1 
15 decrease 0.00000000 1 and 8 
16 decrease 0.00000000   2 
17 decrease 0.00000000   3 
18 decrease 0.10000000   4 
19 decrease 0.50000000   5 
20 decrease 0.20000000   6 
21 decrease 0.00000000 6 and 7 
22 decrease 0.00000000 6 and 7 
23 decrease 0.10000000   7 
24 decrease 0.10000000   8 
25  same 0.00000000   
26  same 0.00000000   1 
27  same 0.00000000 1 and 8 
28  same 0.00000000   2 
29  same 0.00000000   3 
30  same 0.21052632   4 
31  same 0.31578947   5 
32  same 0.26315789   6 
33  same 0.15789474 6 and 7 
34  same 0.00000000 6 and 7 
35  same 0.05263158   7 
36  same 0.00000000   8 

आप 'प्रोप' कॉलम में देख सकते हैं शून्य मान का एक बहुत देखते हैं के रूप में। मैं पहलू के रूप में 'X5employf' कॉलम के साथ एक अनुभवी बार साजिश का उत्पादन कर रहा हूं। लेकिन शून्य मूल्यों के कारण मैं अपनी साजिश पर बहुत खाली जगह के साथ समाप्त होता हूं (नीचे देखें)। शून्य मूल्यों को साजिश नहीं करने के लिए ggplot को मजबूर करने का कोई तरीका है? यह अप्रयुक्त कारकों को छोड़ने का मामला नहीं है क्योंकि ये एनए मूल्य नहीं हैं लेकिन 0 एस हैं। कोई विचार??!

example plot

उत्तर

1

मैं अनिश्चित हैं या नहीं, ggplot में नजरअंदाज मूल्यों को निर्धारित करने के लिए एक रास्ता है वहाँ हूँ। which का उपयोग निर्दिष्ट करने के लिए है कि आप केवल गैर शून्य अनुपात युक्त dataframe के सबसेट का उपयोग करना चाहते अपने भूखंड के लिए

df[df$prop == 0] <- NA 
4

, बस: हालांकि आप बस 0 के recoding एनए के लिए विचार कर सकते हैं। इस तरह आपको अपने मूल डेटा फ्रेम को संशोधित करने की आवश्यकता नहीं है। फिर, अपने scales तर्क में अपने फ्री स्पेस से छुटकारा पाने के लिए facet_grid में "free_x" निर्दिष्ट करें।

plot <- ggplot(df[which(df$prop>0),], aes(X5employff, prop)) + 
    geom_bar(aes(fill=X5employff, stat="identity")) + 
    facet_grid(~ X5employf, scales="free_x") + 
    theme_bw() 
plot 

enter image description here

ध्यान दें कि मैं Excel से जल्दी आयात की खातिर आर में के लिए "रिक्त" के साथ रिक्त फ़ील्ड बदल दिया।

+0

इसके अलावा, [इस समान प्रश्न का उत्तर] (http://stackoverflow.com/questions/17888456/why-this-facet-grid-doesnt-delete-columns) ऐसा करने के लिए थोड़ा अलग तरीका दिखाता है 'ggplot()' –

+1

के अंदर 'एईएस' तर्क के भीतर 'ड्रॉप = TRUE' जोड़ना धन्यवाद sc_evans, यही वही है जो मैं चाहता था। अभी भी आर सिंटेक्स के आसपास अपना सिर पाने की कोशिश कर रहा है! क्या आप जानते हैं कि ggplot पहले मेरे लिए अनुपात की गणना करेगा? इससे पहले कि मैंने इसे प्लॉट करने से पहले अपने डेटा को सारांशित करने के लिए डीडीपीई का उपयोग करना पड़ा?! –

+0

मुझे यह देखना होगा कि आपका मूल डेटाफ्रेम कैसा दिखता है, लेकिन मैं आमतौर पर जो करता हूं वह 'aes() 'के अनुपात के अनुपात की गणना करता है। तो, कुछ 'ggplot (डेटा, एईएस (एक्स, वाई = [मूल्य/योग (मान)] जैसे)) '। वैसे भी, यह वही है जो आप पूछ रहे हैं [यहां] (http://stackoverflow.com/questions/18057081/ddply-summarise-proportional-count)? –

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