2017-01-07 16 views
5

में पिछले एन डेटा बिंदुओं के लिए केवल लेबल लागू करें मैंने प्रत्येक डेटा बिंदु पर लेबल के साथ आर में एक पंक्ति चार्ट (साजिश) बनाया है। बड़ी संख्या में डेटा पॉइंट्स के कारण, साजिश लेबल के साथ पूरी तरह से हो जाती है। मैं केवल अंतिम एन (कहना 4) डेटा बिंदुओं के लिए लेबल लागू करना चाहता हूं। मैंने सबसेट और पूंछgeom_label_repel फ़ंक्शन में कोशिश की है लेकिन उन्हें हमें समझने में कोई त्रुटि संदेश नहीं मिला है। मेरे डेटा सेट में 99 मान हैं, जो 3 समूहों (केपीआई) में फैले हुए हैं।आर ggplot: साजिश

library(ggplot) 
library(ggrepel) 

data.trend <- read.csv(file=....) 

plot.line <- ggplot(data=data.trend, aes(x = Version, y = Value, group = KPI, color = KPI)) + 

    geom_line(aes(group = KPI), size = 1) + 
    geom_point(size = 2.5) + 


    # Labels defined here 
    geom_label_repel(
    aes(Version, Value, fill = factor(KPI), label = sprintf('%0.1f%%', Value)), 
    box.padding = unit(0.35, "lines"), 
    point.padding = unit(0.4, "lines"), 
    segment.color = 'grey50', 
    show.legend = FALSE 
) 

); 

मैं सभी निष्पक्षता, मैं काफी आर के लिए नया हो सकता है कि मैं कुछ बुनियादी याद आती हूँ:

मैं आर में निम्न कोड की है।

अग्रिम धन्यवाद।

+1

कृपया एक पुन: उत्पन्न उदाहरण प्रदान करें या कम से कम परिणामस्वरूप आंकड़े दिखाएं। –

उत्तर

6

सरल दृष्टिकोण केवल अंक आप लेबल करना चाहते हैं शामिल करने के लिए geom_label_repel में data = पैरामीटर सेट करने के लिए है।

यहाँ एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है:

set.seed(1235) 
data.trend <- data.frame(Version = rnorm(25), Value = rnorm(25), 
         group = sample(1:2,25,T), 
         KPI = sample(1:2,25,T)) 

ggplot(data=data.trend, aes(x = Version, y = Value, group = KPI, color = KPI)) + 
    geom_line(aes(group = KPI), size = 1) + 
    geom_point(size = 2.5) + 
    geom_label_repel(aes(Version, Value, fill = factor(KPI), label = sprintf('%0.1f%%', Value)), 
    data = tail(data.trend, 4),     
    box.padding = unit(0.35, "lines"), 
    point.padding = unit(0.4, "lines"), 
    segment.color = 'grey50', 
    show.legend = FALSE) 

enter image description here

दुर्भाग्य से, यह पीछे हटाना एल्गोरिथ्म के साथ थोड़ा खराब करता, नामांकन स्थापन अन्य बिंदुओं जो लेबल नहीं हैं के संबंध में करने से इनकी बनाने (आप देख सकते हैं उपरोक्त आंकड़े में कि कुछ बिंदु लेबल द्वारा कवर किए जाते हैं)।

ggplot(data=data.trend, aes(x = Version, y = Value, group = KPI, color = KPI)) + 
    geom_line(aes(group = KPI), size = 1) + 
    geom_point(size = 2.5) + 
    geom_label_repel(aes(Version, Value, fill = factor(KPI), label = sprintf('%0.1f%%', Value)), 
        box.padding = unit(0.35, "lines"), 
        point.padding = unit(0.4, "lines"), 
        show.legend = FALSE, 
        color = c(rep(NA,21), rep('grey50',4)), 
        fill = c(rep(NA,21), rep('lightblue',4))) 

enter image description here

:

तो, एक बेहतर दृष्टिकोण (लेबल छिपाए जाने के लिए दोनों रंग की स्थापना करके और NA को भरने) color और fill उपयोग करने के लिए बस अवांछित लेबल अदृश्य बनाने के लिए है

+0

धन्यवाद, आप मुझे सही दिशा में डाल दिया। हालांकि, मुझे लगता है कि केवल 1 पंक्ति के अंतिम डेटा बिंदु दिखाए जाते हैं। इस पर काबू पाने के लिए मैंने संस्करणों के साथ एक सूची जोड़ दी है जिसे मैं प्लॉट करना चाहता हूं और डेटा फ़ील्ड में केवल एक शोसेट का उपयोग करना चाहता हूं। यह repel समारोह मिश्रण करता है, लेकिन यह मेरे मामले में कोई समस्या नहीं है। बहुत धन्यवाद! 'लेबल <- पूंछ (data.trend $ संस्करण, 3) ..... geom_label_repel ( डेटा = सबसेट (data.trend,% लेबल में data.trend $ संस्करण%), एईएस (संस्करण, मान, fill = factor (केपीआई), लेबल = sprintf ('% 0.1f %%', मान)), ... ) ' – user32556

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