2014-09-16 11 views
5

के अंदर लेबल डालें 0 में pie फ़ंक्शन का उपयोग करके, लेबल पाई के बाहर दिखाई देते हैं। क्या पाई चार्ट के प्रत्येक टुकड़े के अंदर लेबल रखने का कोई तरीका है?आर - पाई चार्ट

f=table(LETTERS[c(rep(1,7),rep(2,10),rep(3,5))]) 
pie(f) 

यह कैसे ggplot यहाँ place-labels-on-pie-chart के साथ ऐसा कर को दर्शाता है। pie फ़ंक्शन के साथ ऐसा करने का कोई तरीका नहीं है?

संपादित करें: पाई चार्ट के उपयोग के बारे में कुछ टिप्पणियों के जवाब में, मैं उनके साथ अपना इरादा विस्तारित करना चाहता हूं। मैं वास्तव में रीग्रेशन के लिए एक संपूर्ण डेटा फ्रेम को देखने के लिए स्कैटरप्लॉट मैट्रिक्स के हिस्से के रूप में पाई चार्ट का उपयोग कर रहा हूं। मैट्रिक्स की स्थापना इस प्रकार है:

  • लोअर पैनल पृष्ठभूमि उच्च पूर्ण सहसंबंध के लिए गहरे रंग रंग के साथ
    नमूना सहसंबंध संख्या।
  • ऊपरी पैनल
    • पहलू से सांख्यिक के लिए सांख्यिक
    • Boxplots द्वारा सांख्यिक के लिए Scatterplots
  • विकर्ण पैनलों
    • Histograms कारक
    • के लिए सांख्यिक
    • पाई चार्ट के लिए सामान्य घनत्व के साथ

देखें, मुझे विकर्ण पर कारकों के लिए कुछ चाहिए और एक पाई चार्ट पर फैसला किया। मैंने लेबल को वैसे भी छोड़ने का फैसला किया और सभी अक्ष लेबलिंग को भी हटा दिया। मैंने बड़े पाई स्लाइस के लिए गहरे रंगों का उपयोग किया ... इसलिए शायद यह जानकारी प्रदर्शित करने का एक बुरा तरीका हो सकता है लेकिन मुझे लगता है कि यह एक कारक परिवर्तनीय के लिए अच्छा काम करता है, यह दिखाता है कि बैरलप्लॉट से बेहतर कारकों के स्तर पर अवलोकन कैसे किया जाता है। नीचे दिया गया चित्र lars पैकेज में सेट मधुमेह डेटा का वर्णन करता है।

diabetes data set

उत्तर

4

मुझे नहीं लगता कि लेबल पदों के रूप में यह करने के लिए एक आसान तरीका कठिन कोडित रहे हैं करते हैं -

body(pie) 

     if (!is.na(lab) && nzchar(lab)) { 
      lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y) 
      text(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, 
       adj = ifelse(P$x < 0, 1, 0), ...) 
     } 
    } 
    title(main = main, ...) 
    invisible(NULL) 
} 

के अंत में देखने के लिए लेकिन आप के इस भाग के ऊपर लिख सकते हैं कार्यक्रम

# create a new pie function to save overwriting original 
newpie <- pie 

# Tweak the label positions - changed 1.1 to 0.7 
# also commented out the lines function - so that the 
# small lines next to the labels are not plot 
newlbs <- quote(if (!is.na(lab) && nzchar(lab)) { 
        #lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y) 
        text(0.7 * P$x, 0.7 * P$y, labels[i], xpd = TRUE, 
            adj = ifelse(P$x < 0, 1, 0), ...) 
}) 

# add in the new lines of code - trial and error found the right position 
body(newpie)[[22]][[4]][[7]] <- newlbs 

newpie(f) 

तो काम का एक कम लगता है, लेकिन यह वहाँ मिलता है और आप कोण को थोड़ा अधिक काम करना या टेक्स्ट को फ़ॉर्मेट करने की आवश्यकता होगी।

(शायद यह करने के लिए एक तर्क है)

+1

अच्छा कामकाज। मुझे लगता है कि पाई चार्ट को बदलना बहुत मुश्किल है क्योंकि आंकड़ों में से कोई भी पाई चार्ट का उपयोग नहीं करना चाहिए। ;-) –

+0

चीयर्स रिचर्ड, हाँ, मैं 'पाई' सहायता उद्धृत करने जा रहा था - 'पाई चार्ट जानकारी प्रदर्शित करने का एक बहुत बुरा तरीका है' – user20650

+0

प्रो टिप: आप किसी फ़ंक्शन पर 'पूंछ' का उपयोग कर सकते हैं, यानी 'पूंछ (पाई, 9) '' बॉडी 'कॉल के बराबर है जिसे आपको शायद स्क्रॉल करना पड़ा था। बेशक, आपको शरीर को बदलने के लिए अभी भी 'शरीर <-' की आवश्यकता है। –

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