2011-06-23 12 views
35

के साथ आर में geom_bar पर लेबल कैसे रखें I geom_bar ग्राफ़ के शीर्ष पर कुछ लेबल स्टैक्ड करना चाहते हैं। यहाँ एक उदाहरण है:ggplot2

df <- data.frame(x=factor(c(TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE))) 
ggplot(df) + geom_bar(aes(x,fill=x)) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),axis.title.x=theme_blank(),legend.title=theme_blank(),axis.title.y=theme_blank()) 

अब

तालिका (df $ x)

FALSE TRUE 
    3  5 

मैं 3 और 5 शीर्ष पर करना चाहते हैं दो सलाखों में से। इससे भी बेहतर अगर मैं प्रतिशत मूल्य भी प्राप्त कर सकता हूं। जैसे 3 (37.5%) और 5 (62.5%)। इस तरह:

क्या यह संभव है? यदि हां, तो कैसे?

+2

सलाखों के शीर्ष पर संख्या या पाठ जोड़ना विकृत करता है कि आंखों की ऊंचाई ऊंचाई पर तुलना कैसे करती है। आर-सहायता पर [यह चर्चा] देखें (http://tolstoy.newcastle.edu.au/R/e2/help/07/08/22858.html)। –

उत्तर

28

ggplot में कई कार्यों के साथ, सामान्य रणनीति यह है कि आप साजिश में डेटा फ्रेम में जो जोड़ना चाहते हैं उसे इस तरह से जोड़ना है कि चर आपकी साजिश में चर और सौंदर्यशास्त्र से मेल खाते हैं। ताकि x चर df में इसी चर से मेल खाता है, और इतने पर

dfTab <- as.data.frame(table(df)) 
colnames(dfTab)[1] <- "x" 
dfTab$lab <- as.character(100 * dfTab$Freq/sum(dfTab$Freq)) 

: तो उदाहरण के लिए, अगर आप इस तरह एक नया डेटा फ्रेम बनाने चाहते हैं। तो फिर तुम बस में शामिल यह geom_text का उपयोग कर:

ggplot(df) + geom_bar(aes(x,fill=x)) + 
    geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) + 
    opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(), 
     axis.title.x=theme_blank(),legend.title=theme_blank(), 
     axis.title.y=theme_blank()) 

यह उदाहरण सिर्फ प्रतिशत साजिश होगा, लेकिन आप कर सकते हैं paste एक साथ गिना जाता है और साथ ही के माध्यम से कुछ इस तरह:

dfTab$lab <- paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ") 

ध्यान दें कि वर्तमान संस्करण में ggplot2, opts को बहिष्कृत किया गया है, इसलिए हम अब theme और element_blank का उपयोग करेंगे।

36

ggplot पर टेक्स्ट प्लॉट करने के लिए आप geom_text का उपयोग करते हैं। लेकिन मैं इसे सहायक पहले ddply

dfl <- ddply(df, .(x), summarize, y=length(x)) 
str(dfl) 

का उपयोग कर के बाद से डेटा पूर्व में संक्षेप है डेटा संक्षेप में प्रस्तुत करने लगता है, आप जोड़ना बदलने के लिए याद रखने की आवश्यकता stat="identity" पैरामीटर geom_bar रहे हैं:

ggplot(dfl, aes(x, y=y, fill=x)) + geom_bar(stat="identity") + 
    geom_text(aes(label=y), vjust=0) + 
    opts(axis.text.x=theme_blank(), 
     axis.ticks=theme_blank(), 
     axis.title.x=theme_blank(), 
     legend.title=theme_blank(), 
     axis.title.y=theme_blank() 
) 

enter image description here