2010-03-09 15 views
41

ggplot2 का उपयोग करके मैं सामान्य रूप से geom_text और position=jitter जैसे कुछ प्लॉट्स को एनोटेट करने के लिए उपयोग करता हूं।अच्छी तरह से एक ggplot2 (मैनुअल)

हालांकि - एक अच्छी साजिश के लिए मुझे अक्सर मैन्युअल रूप से एनोटेट करने के लिए उपयुक्त लगता है। नीचे की तरह:

data2 <- structure(list(type = structure(c(5L, 1L, 2L, 4L, 3L, 5L, 1L, 
2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L), .Label = c("EDS", 
"KIU", "LAK", "MVH", "NA*"), class = "factor"), value = c(0.9, 
0.01, 0.01, 0.09, 0, 0.8, 0.05, 0, 0.15, 0, 0.41, 0.04, 0.03, 
0.52, 0, 0.23, 0.11, 0.02, 0.64, 0.01), time = c(3L, 3L, 3L, 
3L, 3L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, 15L, 15L, 15L, 27L, 27L, 
27L, 27L, 27L), year = c(2008L, 2008L, 2008L, 2008L, 2008L, 2007L, 
2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
2006L, 2006L, 2006L, 2006L, 2006L)), .Names = c("type", "value", 
"time", "year"), row.names = c(1L, 3L, 4L, 5L, 6L, 7L, 9L, 10L, 
11L, 12L, 13L, 15L, 16L, 17L, 18L, 19L, 21L, 22L, 23L, 24L), class = "data.frame") 
ggplot(data2, aes(x=time, y=value, group=type, col=type))+ 
geom_line()+ 
geom_point()+ 
theme_bw()+ 
annotate("text", x=6, y=0.9, label="this is a wrong color")+ 
annotate("text", x=15, y=0.6, label="this is a second annotation with a wrong color") 

समस्या यह है कि मैं पाठ एनोटेशन रंग रेखा का रंग मैच के लिए नहीं मिल सकता है, है। मुझे लगता है कि मैं इसे मैन्युअल पैमाने से ठीक कर सकता हूं, लेकिन मुझे उम्मीद है कि एक बेहतर तरीका है?

+2

भी 'directlabels' पैकेज – baptiste

उत्तर

46

आप व्याख्या के बजाय geom_text() का उपयोग करते हैं() आप अपने भूखंड के लिए एक समूह रंग पारित कर सकते हैं:

ggplot(data2, aes(x=time, y=value, group=type, col=type))+ 
geom_line()+ 
geom_point()+ 
theme_bw() + 
geom_text(aes(7, .9, label="correct color", color="NA*")) + 
geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

तो का उपयोग कर व्याख्या() यह इस तरह दिखता है: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/03/before.png

तो

के बाद geom_text() का उपयोग करके ऐसा लगता है: alt text http://www.cerebralmastication.com/wp-content/uploads/2010/03/after.png

+5

आप क्या देख दाहिने तरफ किंवदंती नोटिस? आम तौर पर यह लाइन पर 'ए' के ​​बजाय एक सर्कल होना चाहिए। यह अच्छा नहीं लग रहा है। – qed

+0

मुझे लेबल भी मिल रहा है। वैसे भी इसे हटाने के लिए? – max

+2

आप geom_text में "show_guide = F" जोड़कर 'ए' से छुटकारा पा सकते हैं। (Mbask द्वारा उत्तर डुप्लीकेट द्वारा बदसूरत प्रतिपादन को रोकता है और इसके बजाय इसका उपयोग किया जाना चाहिए। इसके अलावा show_guide विकल्प को एफ पर सेट किया जाना चाहिए। – bug313

57

मुझे एक ही समस्या थी और इसे जेडी लॉन्ग उत्तर के साथ हल किया गया। लेकिन ggplot2 के परिणाम के रूप में संस्करण 0.9.0 में अपडेट किया गया मैंने देखा कि सभी geom_text() कॉल प्लॉट पर कुछ हद तक धुंधला हुआ है।

kohske के लिए धन्यवाद मैं इस कोड है कि खोज की

ggplot(data2, aes(x=time, y=value, group=type, col=type))+ 
geom_line()+ 
geom_point()+ 
theme_bw() + 
geom_text(aes(7, .9, label="correct color", color="NA*")) + 
geom_text(aes(15, .6, label="another correct color!", color="MVH")) 

भूखंडों geom_text nrow(data2) बार!

geom_text को तार आप साजिश रची जा करने के लिए चाहते हैं के लिए पकड़े निर्देशांक, लेबल और रंग एक अलग data.frame बनाने जा रहा है डेटा की आपूर्ति के लिए सही तरीका:

data2.labels <- data.frame(
    time = c(7, 15), 
    value = c(.9, .6), 
    label = c("correct color", "another correct color!"), 
    type = c("NA*", "MVH") 
) 

ggplot(data2, aes(x=time, y=value, group=type, col=type))+ 
    geom_line()+ 
    geom_point()+ 
    theme_bw() + 
    geom_text(data = data2.labels, aes(x = time, y = value, label = label)) 
+6

यह एक बेहतर जवाब है, खासकर बड़े डेटा सेट के लिए। Geom_text डुप्लिकेशंस वास्तव में एक पीडीएफ को मार सकता है, जिससे दर्दनाक रूप से धीमा हो जाता है। – naught101

+2

एक ही समस्या में भागो और यह हल हो गया! अपने डेटा मैपिंग के बिना geom_text() का उपयोग करने से टेक्स्ट के ओवरप्लॉटिंग और खराब रिज़ॉल्यूशन का परिणाम होगा। डेटा मैपिंग प्रदान करने से समस्या हल हो जाएगी। – Chris

+0

धन्यवाद @ कोहस्के और @mbask। ऊपर दिए गए कोड का उपयोग करते समय "निरंतर पैमाने पर आपूर्ति किए गए अलग-अलग मूल्य" त्रुटियों वाले लोगों के लिए। विकल्प 'स्ट्रिंग्सएफ़ैक्टर्स = FALSE' – micstr

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