ggplot

2015-07-10 14 views
6

में एक स्कैटर प्लॉट चार्ट में सहसंबंध गुणांक के साथ italicised आर जोड़ना मैं एक सहसंबंध गुणांक के साथ एक साधारण स्कैटर साजिश उत्पन्न करने के लिए नीचे दिए गए कोड का उपयोग करने की कोशिश कर रहा हूं जो साजिश पर आर इटालिसिस किया गया होगा।ggplot

data(mtcars) 

# Load required libraries 
require(ggplot2)    # To derive the graphs 
require(ggthemes)    # To apply ggplot themes to the chart 
require(scales)    # For pretty breaks 

# Function to generate correlation coefficient for the charts 
corr_eqn <- function(x,y, digits = 2) { 
    corr_coef <- round(cor(x, y), digits = digits) 
    corr_coef <- expression(paste(italic(r)," = ", corr_coef)) 
    return(corr_coef) 
} 

# Provide a scatter plot for income and health deprivation 
ggplot(mtcars, aes(x = drat, y = wt)) + 
    geom_point(shape = 19, size = 2, aes(colour = as.factor(cyl))) + 
    geom_smooth(colour = "red", fill = "lightgreen", method = 'lm') + 
    ggtitle("Example") + 
    xlab("drat") + 
    ylab("wt") + 
    scale_colour_tableau("tableau10") + 
    geom_text(x = 3, y = 3, 
      label = corr_eqn(mtcars$drat, 
          mtcars$wt), parse = TRUE) + 
    theme(legend.key = element_blank(), 
     legend.background = element_rect(colour = 'black'), 
     legend.position = "bottom", 
     legend.title = element_blank(), 
     plot.title = element_text(lineheight = .8, face = "bold", vjust = 1), 
     axis.text.x = element_text(size = 11, vjust = 0.5, 
            hjust = 1, colour = 'black'), 
     axis.text.y = element_text(size = 11, colour = 'black'), 
     axis.title = element_text(size = 10, face = 'bold'), 
     axis.line = element_line(colour = "black"), 
     plot.background = element_rect(colour = 'black', size = 1), 
     panel.background = element_blank()) 

कोड कंसोल में ? चिह्न के साथ बंद हो जाता है। लाइनों के साथ कोड चल रहा है: मैं, कैसे अनुमान लगा रहा हूँ कि मेरी समारोह प्रारूप का समीकरण आर = 0.7 काम नहीं करता है उत्पन्न करने के लिए scatter plot

:

# geom_text(x = 3, y = 3, 
#    label = corr_eqn(mtcars$drat, mtcars$wt), parse = TRUE) + 

टिप्पणी की है, तो निम्न चार्ट उत्पन्न करता है क्या मैं इसे ठीक कर सकता हूँ?

+0

[इसी तरह के प्रश्न] पर एक नज़र डालें [http://stackoverflow.com/q/7549694/707145)। – MYaseen208

+0

@ मायसेन 208 वास्तव में, मैं लिंक किए गए प्रश्न में चर्चा का उपयोग करके अपना कार्य लिखने की कोशिश कर रहा था लेकिन यह काम नहीं करता है। जाहिर है, मैंने कुछ गलत किया है। – Konrad

उत्तर

6

जैसा कि आपको संदेह है, आपको बस अपने फ़ंक्शन को ट्विक करने की आवश्यकता है। substitute का उपयोग आप this answer में देख सकते थे, लेकिन आप यहां paste का भी उपयोग कर सकते हैं।

corr_eqn <- function(x,y, digits = 2) { 
    corr_coef <- round(cor(x, y), digits = digits) 
    paste("italic(r) == ", corr_coef) 
} 

enter image description here

ध्यान दें कि यदि आप चाहते हैं जोड़ा as.character अपने मूल कार्य बातें लौटे क्या करने के लिए पार्स होता। हालांकि, परिणाम वास्तविक सहसंबंध गुणांक की बजाय स्ट्रिंग के रूप में corr_coef के साथ होता।

मुझे यह भी जोड़ना चाहिए कि geom_text खराब रिज़ॉल्यूशन में परिणाम हो सकता है यदि आप लेबल्स नहीं डालते हैं और एक नए डेटा में प्रवेश करते हैं। फ्रेम।

labels = data.frame(x = 3, y = 3, label = corr_eqn(mtcars$drat, mtcars$wt)) 

फिर geom_text के लिए data तर्क और aes का उपयोग करें:

geom_text(data = labels, aes(x = x, y = y, 
         label = label), parse = TRUE) 

geom = "text" साथ annotate देखें एक और विकल्प है कि नए data.frame से बचा जाता है के रूप में।

+0

व्यापक उत्तर के लिए बहुत बहुत धन्यवाद। फ़ॉन्ट्स को समायोजित करना बहुत मुश्किल होगा, उदाहरण के लिए आकार और फ़ॉन्ट चेहरे को बदलकर? – Konrad

+1

@ कोनराड आप 'parse = TRUE' का उपयोग करते समय 'आकार' और 'परिवार' तर्कों का उपयोग करके' geom_text' में लेबल के लिए फ़ॉन्ट आकार और परिवार को निश्चित रूप से बदल सकते हैं, लेकिन फ़ॉन्ट का चेहरा नहीं। – aosmith

+0

'corr_eqn <- फ़ंक्शन (x, y, अंक = 2) { + corr_coef <- दौर (कोर (x, y), अंक = अंक) + पेस्ट (" इटालिक (आर) == ", corr_coef) +} लेबल = data.frame (x = 3, y = 3, लेबल = corr_eqn (mtcars $ drat, mtcars $ wt)) 'केवल एक पंक्ति के साथ एक डीएफ उत्पन्न करता है 'xy लेबल 3 3 इटालिक (आर) == -0.71' – yPennylane