R

Εισαγωγη στην R

Περισσότερα για Γραφικά με την R

Άννα Μοσχά
Κέντρο Η/Υ, Ε.Μ.Π.

Περιεχομενα

  1. Γραφικές Μέθοδοι - Παραμετροποίηση
  2. Παράμετροι - Ορίσματα της plot()
  3. Συνάρτηση par()
  4. Πολλαπλά διαγράμματα
  5. Περισσότερες πληροφορίες σε γράφημα
  6. Αποθήκευση διαγραμμάτων
  7. Αποθήκευση διαγραμμάτων - Είδη αρχείων
  8. Αντιγραφή γραφημάτων
  9. Shiny : Ένα web application framework για την R

Γραφικές Μέθοδοι - Παραμετροποίηση(1)

  • Βασικό γράφημα:
  • > plot(cars$speed, cars$dist)
    plot(cars$speed,cars$dist)

Γραφικές Μέθοδοι - Παραμετροποίηση(2)

  • Παραμετροποιημένο, εμπλουτισμένο γράφημα:
  • > plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data", sub="10/9/2015", col="red", pch=4, cex.axis=0.6)
    plot(cars$speed,cars$dist)

Γραφικές Μέθοδοι - Παραμετροποίηση(3)

  • Παραμετροποιημένο, εμπλουτισμένο γράφημα:
  • > plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data" , sub="10/9/2015", col="red", type='o')
    plot(cars$speed,cars$dist)

Παράμετροι - Ορίσματα της plot()

  • xlab: Αλλάζει τον τίτλο του οριζόντιου x άξονα
  • ylab: Αλλάζει τον τίτλο του κάθετου y άξονα
  • main: Προσθέτει τίτλο στο γράφημα
  • sub: Προσθέτει υπότιτλο στο γράφημα
  • col: Αλλάζει το χρώμα του γραφήματος.
  • Με την colours() παίρνουμε όλα τα διαθέσιμα χρώματα που "γνωρίζει" η R.
    > colours()
      [1] "white"                "aliceblue"            "antiquewhite"         "antiquewhite1"       
      [5] "antiquewhite2"        "antiquewhite3"        "antiquewhite4"        "aquamarine"          
      [9] "aquamarine1"          "aquamarine2"          "aquamarine3"          "aquamarine4"         
     [13] "azure"                "azure1"               "azure2"               "azure3"              
     [17] "azure4"               "beige"                "bisque"               "bisque1"  
    ..........................................................................................
    ..........................................................................................
    [653] "yellow1"              "yellow2"              "yellow3"              "yellow4"             
    [657] "yellowgreen" 

Παράμετροι - Ορίσματα της plot()

  • Επιπλέον παράμετροι με την col:
  • > plot(cars$speed, cars$dist, xlab = "Speed (mph)", ylab = "Stopping distance (ft)", main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red")
    plot(cars$speed,cars$dist)

Παράμετροι - Ορίσματα της plot()

  • Επιπλέον παράμετροι με την col:
    • col.main: Αλλάζει το χρώμα του τίτλου
    • col.sub: Αλλάζει το χρώμα του υπότιτλου
    • col.axis: Αλλάζει το χρώμα των σημείων των αξόνων.
    • col.lab: Αλλάζει το χρώμα των τίτλων των αξόνων.

Παράμετροι - Ορίσματα της plot()

  • pch: Προσδιορίζει το σύμβολο που θα χρησιμοποιηθεί για την αναπαράσταση σημείου.
    • Τα διαφορετικά σύμβολα φαίνονται στην παρακάτω εικόνα:
    • symbols.png

Παράμετροι - Ορίσματα της plot()

  • Μπορούμε επίσης να δούμε τα σύμβολα που χρησιμοποιούνται για την αναπαράσταση σημείων με την εντολή
  • > plot(0:25, pch=0:25)
    Rplot_symbols2.png

Παράμετροι - Ορίσματα της plot()

  • type: Τρόπος που γίνεται η αναπαράσταση
    • "p" : Σημεία
    • "l": Γραμμή
    • "o": Γραμμή και σημεία ενωμένα
    • "n": Τίποτα κ.α.

Παράμετροι - Ορίσματα της plot()

  • Όταν αναπαραστάται το γράφημα με γραμμή μπορούμε να επιλέξουμε το είδος της γραμμής
  • > plot(cars$speed, type="l", lty=2)
    Rplot_line.png

Παράμετροι - Ορίσματα της plot()

  • Τα είδη των γραμμών αναπαράστασης φαίνονται στην παρακάτω εικόνα:
  • linetypes.png

Παράμετροι - Ορίσματα της plot()

  • cex.axis: Προσδιορίζει με ποια αναλογία θα πολλαπλασιαστεί το αρχικό μέγεθος των σημείων των αξόνων (default=1), δηλαδή αλλάζει το μέγεθος τους. Π.χ. το 0.6 μικραίνει το μέγεθος ενώ το 1.7 το αυξάνει κατά 70%.
  • > plot(cars$speed, cars$dist, main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red", cex.axis=1.7)
    Rplot_param5.png

Παράμετροι - Ορίσματα της plot()

  • Παρόμοια με το όρισμα col έχουμε επιπλέον παράμετρους για τo cex:
    • cex.lab: Αλλάζει το μέγεθος των τίτλων των αξόνων
    • cex.main: Αλλάζει το μέγεθος του τίτλου του διαγράμματος
    • cex.sub: Αλλάζει το μέγεθος του υπότιτλου του διαγράμματος

Παράμετροι - Ορίσματα της plot()

  • xlim: Δίνουμε εύρος τιμών για τον άξονα x
  • Παράδειγμα: xlim=c(0,80)
    > plot(cars$speed, cars$dist, main="Cars data" , col="red", type='o', pch=4, col.axis="green", col.main="red", xlim=c(0, 80))
    Rplot_param6.png
  • ylim: Δίνουμε εύρος τιμών για τον άξονα y.

Συνάρτηση par() (1)

  • Παράμετροι που ορίζονται μέσα στην συνάρτηση plot() ---> επηρεάζουν μόνο το συγκεκριμένο γράφημα που έχει κάθε φορά τις συγκεκριμένες παραμέτρους.
  • (Αν ξανασχεδιάσουμε ένα γράφημα χωρίς αναφορά σε συγκεκριμένη παράμετρο τότε το γράφημα θα έχει τις default τιμές της παραμέτρου.)
  • Οι ίδιοι παράμετροι με την plot() ορίζονται μέσα στην συνάρτηση par() ---> επηρεάζουν όλα τα γραφήματα του session

Συνάρτηση par() (2)

  • par(): Εμφανίζει όλες τις τιμές των γραφικών παραμέτρων.
  • > par()
    $xlog
    [1] FALSE
    
    $ylog
    [1] FALSE
    
    ..............................
    
    $ylbias
    [1] 0.2
    
  • par()$col : Εμφανίζει την τιμή του ορίσματος χρώμα, by default μαύρο
  • > par()$col
    [1] "black"

Συνάρτηση par() (3)

  • Προσοχή! Όταν θέλω να αλλάξω τις τιμές των ορισμάτων στην συνάρτηση par() επειδή το αποτέλεσμα θα είναι μόνιμο κρατάω πάντα τις default τιμές σε μια μεταβλητή ώστε αργότερα να τις επαναφέρω.
  • > old_par<-par()
    > par(col="red")
    > plot(cars$speed)
    
    Rplot_par_red.png Έβαλα τις default τιμές των ορισμάτων στην μεταβλητή old_par. Άλλαξα στη συνέχεια το χρώμα σε κόκκινο και παρατηρώ ότι οτιδήποτε σχεδιάzω μετά έχει κόκκινο χρώμα

Συνάρτηση par() (4)

  • Βάζω ξανά τις default τιμές των ορισμάτων στη συνάρτηση par(), οπότε το χρώμα έχει επιστρέψει στην αρχική του τιμή black και ότι σχεδιάσω πλέον έχει χρώμα μαύρο
  • > par(old_par)
    Warning messages:
    1: In par(old_par) : graphical parameter "cin" cannot be set
    .............................................................
    6: In par(old_par) : graphical parameter "page" cannot be set
    > par()$col
    [1] "black"
    > plot(cars$speed)
    Rplot_par_black.png Εμφανίζει ένα Warning μήνυμα γιατί σε κάποια ορίσματα της par() δεν μπορείς να αλλάξεις τιμή.

Πολλαπλά διαγράμματα (1)

  • Για να τυπωθούν στο ίδιο layout περισσότερα του ενός γραφήματα (για πιο εύκολη σύγκριση) χρησιμοποιούμε:
    1. την παράμετρο mfrow (τυπώνονται ανά γραμμή) ή mfcol (τυπώνονται ανά στήλη) της συνάρτησης par()
    2. την συνάρτηση layout(), για πιο σύνθετες περιπτώσεις
    3. την συνάρτηση pairs() για όλο το data frame που έχει αριθμητικές μεταβλητές, τύπου factor και logical μεταβλητές.

Πολλαπλά διαγράμματα (2)

  • Παράδειγμα:
  • Χρησιμοποιούμε τα δεδομένα mtcars για να συγκρίνουμε την κατανάλωση καυσίμου (μίλια ανά γαλόνι) με βάση κάποια χαρακτηριστικά των αυτοκινήτων.
  • str(mtcars) : Βλέπουμε την δομή των δεδομένων και πληροφορίες για τις μεταβλητές
  • > str(mtcars)
    'data.frame':	32 obs. of  11 variables:
     $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
     $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
     $ disp: num  160 160 108 258 360 ...
     $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
     $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
     $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
     $ qsec: num  16.5 17 18.6 19.4 17 ...
     $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
     $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
     $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
     $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

Πολλαπλά διαγράμματα (3)

  • ?mtcars : Βλέπουμε πληροφορίες που εξηγούν τα δεδομένα
  • > ?mtcars
    mtcars_help_mikrh.png

Πολλαπλά διαγράμματα (4)

  • Θα τυπώσουμε 4 διαγράμματα στο ίδιο layout:
  • > par(mfrow=c(2,2))
    Χωρίζει το layout σε ένα πλέγμα με 2 γραμμές και 2 στήλες και θα τυπώνει τα 4 διαγράμματα ανά γραμμή
    > plot(mtcars$disp,mtcars$mpg)
    Rplot_mfrow_disp.png Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τον κυβισμό στη αριστερή πάνω γωνία

Πολλαπλά διαγράμματα (5)

> plot(mtcars$hp,mtcars$mpg)
Rplot_mfrow_hp.png Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τους ίππους στην δεξιά πάνω γωνία

Πολλαπλά διαγράμματα (6)

> plot(mtcars$drat,mtcars$mpg)
Rplot_mfrow_drat.png Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με την αναλογία του πίσω άξονα στην αριστερή κάτω γωνία

Πολλαπλά διαγράμματα (7)

> plot(mtcars$wt,mtcars$mpg)
Rplot_mfrow_teliko.png Σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με το βάρος του αυτοκινήτου στην δεξιά κάτω γωνία

Πολλαπλά διαγράμματα (8)

  • Αν χρησιμοποιούσαμε το par(mfcol=c(2,2)) θα χωριζόταν το layout πάλι σε ένα πλέγμα με 2 γραμμές και 2 στήλες αλλά θα τυπωνόταν τα διαγράμματα ανά στήλη.
  • Για να επανέλθω στο αρχικό layout:
  • > par(mfrow=c(1,1))
    > plot(mtcars$wt,mtcars$mpg)
    Rplot_arxiko.png Δηλαδή το layout αποτελείται από μία γραμμή και μία στήλη.(Ή θα μπορούσα πιο σωστά να είχα αρχικά κρατήσει σε μια μεταβλητή όλες τις αρχικές παραμέτρους και μετά να τις επαναφέρω). Επομένως το νέο διάγραμμα καλύπτει όλο το layout.

Πολλαπλά διαγράμματα (9)

  • Για να τυπώσουμε με πιο σύνθετο τρόπο διαγράμματα σε ένα σχέδιο χρησιμοποιούμε την συνάρτηση layout()
  • Η συνάρτηση layout() δέχεται σαν όρισμα έναν πίνακα που δείχνει πόσα διαγράμματα θα τυπωθούν και σε ποια θέση.
  • Παράδειγμα:
  • Θα τυπώσουμε 3 διαγράμματα από τα οποία το πρώτο θα εκτείνεται σε όλο πλάτος της γραμμής.
    > grid<-matrix(c(1,1,2,3), nrow=2, byrow=TRUE)
    > grid
         [,1] [,2]
    [1,]    1    1
    [2,]    2    3
    > layout(grid)
    Δημιουργούμε τον πίνακα grid που προσδιορίζει την θέση κάθε διαγράμματος. Xωρίζουμε το layout με βάση τον πίνακα grid.

Πολλαπλά διαγράμματα (10)

  • συνέχεια
  • > plot(mtcars$mpg~as.factor(mtcars$cyl))
    Rplot_layout_1.png Αφού έχει χωριστεί το layout κατάλληλα, σχεδιάζει το boxplot της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) ανά αρθμό κυλίνδρων το οποίο εκτείνεται σε όλη την πρώτη γραμμή.

Πολλαπλά διαγράμματα (10)

  • συνέχεια
  • > plot(mtcars$wt,mtcars$mpg)
    Rplot_layout_2.png Στη συνέχεια, σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με το βάρος του αυτοκινήτου στην αριστερή κάτω γωνία.

Πολλαπλά διαγράμματα (11)

  • συνέχεια
  • > plot(mtcars$hp,mtcars$mpg)
    Rplot_layout_3.png Τέλος, σχεδιάζει το διάγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) σε σχέση με τους ίππους στην δεξιά κάτω γωνία.

Πολλαπλά διαγράμματα (12)

  • Για να επανέλθω στο αρχικό layout:
  • > layout(1)
    > plot(mtcars$wt,mtcars$mpg)
    Rplot_arxiko.png Ή θα μπορούσα πιο σωστά να είχα αρχικά κρατήσει σε μια μεταβλητή όλες τις αρχικές παραμέτρους και μετά να τις επαναφέρω. Το νέο διάγραμμα πλέον καλύπτει όλο το layout.

Πολλαπλά διαγράμματα (13)

  • Όπως έχει ήδη αναφερθεί σε προηγούμενη ενότητα, η pairs(dataframe με αριθμητικές μεταβλητές) ---> Πίνακα από scatter plots για όλες τις μεταβλητές. Παράδειγμα:
  • > pairs(mtcars)
    plot(mtcars) Επειδή όλες οι μεταβλητές του data frame mtcars είναι αριθμητικές μας δίνει ένα πίνακα με όλα τα διαγράμματα διασποράς των μεταβλητών ανά δύο. Η pairs(mtcars) μας δίνει ακριβώς το ίδιο με το plot(mtcars)

Περισσότερες πληροφορίες σε γράφημα

  • Προσθήκη γραμμής σε γράφημα:
  • Αρχικό γράφημα:
    > plot(mtcars$wt, mtcars$mpg, main="Weight versus Fuel Consumption", xlab="Weight", ylab="Fuel Consumption miles/gallon")
    Rplot_mtcars_wt_mpg.png

Περισσότερα σε γράφημα

  • Προσθέτω μία γραμμή με την συνάρτηση abline(), την γραμμή y=37-5*x
  • > abline(37, -5, col=2)
    Rplot_mtcars_wt_mpg_line.png

Περισσότερα σε γράφημα

  • Προσθήκη της κάθετης γραμμής x=<η διάμεσος του βάρους> :
  • > abline(v=median(mtcars$wt), col=3)
    Rplot_mtcars_wt_mpg_vertical.png

Περισσότερα σε γράφημα

  • Προσθήκη της οριζόντιας γραμμής y=<η διάμεσος της κατανάλωσης καυσίμου (μίλια ανά γαλόνι)>:
  • > abline(h=median(mtcars$mpg), col=4)
    Rplot_mtcars_wt_mpg_horizontal.png *Παρατήρηση: Στην R από την στιγμή που έχει προστεθεί κάτι σε ένα γράφημα δεν μπορεί να διαγραφεί. Αν θέλουμε να διαγράψουμε κάτι θα πρέπει να ξαναρχίσουμε από την αρχή την σχεδίαση με την εντολή plot()

Περισσότερα σε γράφημα

  • Προσθήκη πολυγώνου συχνοτήτων:
  • Το πολύγωνο συχνοτήτων είναι η τεθλασμένη γραμμή που ενώνει τις συχνότητες των κέντρων των κλάσεων
    > h1<-hist(mtcars$mpg, breaks=20) 
    Rplot_h1_mtcars$mpg.png Σχεδιάζουμε το ιστόγραμμα της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) και το αναθέτουμε στην μεταβλητή h1.

Περισσότερα σε γράφημα

  • Προσθήκη πολυγώνου συχνοτήτων (συνέχεια):
  • > h1<-hist(mtcars$mpg, breaks=20)
    > mode(h1)
    [1] "list"
    > str(h1)
    List of 6
     $ breaks  : num [1:25] 10 11 12 13 14 15 16 17 18 19 ...
     $ counts  : int [1:24] 2 0 0 1 3 4 1 2 2 3 ...
     $ density : num [1:24] 0.0625 0 0 0.0312 0.0938 ...
     $ mids    : num [1:24] 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5 18.5 19.5 ...
     $ xname   : chr "mtcars$mpg"
     $ equidist: logi TRUE
     - attr(*, "class")= chr "histogram"
    Παρατηρήστε ότι η μεταβλητή h1 είναι λίστα που περιέχει 6 στοιχεία τα οποία περιγράφουν το ιστόγραμμα. Για να σχεδιάσουμε το πολύγωνο συχνοτήτων θα χρησιμοποίησουμε τα mids και counts που είναι τα κέντρα των κλάσεων της μεταβλητής mtcars$mpg και οι συχνότητες των αντίστοιχων κλάσεων αντίστοιχα.

Περισσότερα σε γράφημα

  • Προσθήκη πολυγώνου συχνοτήτων (συνέχεια):
  • > lines(h1$mids, h1$counts, col=2)
    Rplot_h1_polygon.png Η lines() παίρνει ως όρισμα συντεταγμένες σημείων και ενώνει τα σημεία που προκύπτουν με ευθύγραμμα τμήματα.

Περισσότερα σε γράφημα

  • Προσθήκη καμπύλης σε γράφημα:
  • Σχεδιάζουμε το ιστόγραμμα σχετικών συχνοτήτων της κατανάλωσης καυσίμου (μίλια ανά γαλόνι) οπότε όλη η επιφάνεια του ισούται με 1. Στη συνέχεια, θα προσθέσουμε την καμπύλη της κανονικής κατανομής με μέση τιμή και τυπική απόκλιση την μέση τιμή και τυπική απόκλιση της συγκεκριμένης μεταβλητής.
    > hist(mtcars$mpg, breaks=20, prob=T)
    Rplot_hist_mtcars.png

Περισσότερα σε γράφημα

  • Προσθήκη καμπύλης σε γράφημα (συνέχεια):
  • > curve(dnorm(x, mean=mean(mtcars$mpg), sd=sd(mtcars$mpg)),from=10, to=40, add=TRUE)
    Rplot_curve_normal.png Η curve() σχεδιάζει καμπύλη συνάρτησης, στην προκειμένη περίπτωση, την dnorm() που είναι η σ.π.π. της κανονικής κατανομής μεταξύ ενός διαστήματος που καθορίζεται από τα [from, to]. Πρέπει να δώσουμε add=TRUE για να προστεθεί στο γράφημα του ιστογράμματος.

Περισσότερα σε γράφημα

  • Προσθήκη επιπλέον πληροφορίας σε γράφημα χρησιμοποιώντας τα ορίσματα της συνάρτησης plot().

  • Παραδείγματα:

Περισσότερα σε γράφημα

  1. Για να παραστήσω τους τελικούς βαθμούς χρησιμοποιώ αντί για σύμβολο τις τιμές άλλης μεταβλητής, της Sex, και έχω περισσότερη πληροφορία στο γράφημα
  2. > plot(z$Final, type="n")
    > text(z$Final, label=z$Sex)
    Rplot_Final_Sex.png

Περισσότερα σε γράφημα

  1. Oμοίως για την κατανάλωση βενζίνης (μίλια ανά γαλόνι) ανά αριθμό κυλίνδρου
  2. > plot(mtcars$mpg, type="n")
    > text(mtcars$mpg, label=as.character(mtcars$cyl))
    Rplot_mpg_cyl.png

Περισσότερα σε γράφημα

  1. Πληροφορία από τρεις μεταβλητές, η τρίτη μέσω του χρώματος
  2. > plot(mtcars$hp, mtcars$mpg, col=mtcars$cyl)
    Rplot_mtcars_col.png

Περισσότερα σε γράφημα

  1. ή πιο επεξηγηματικά:
  2. > legend(250,30, pch=1, col=unique(mtcars$cyl), legend=unique(mtcars$cyl))
    Rplot_mtcars_col_legend.png Εμφανίζει σε λεζάντα το χρώμα που αντιστοιχεί σε κάθε αριθμό κυλίνδρων (χρωματίζει το σύμβολο)

Περισσότερα σε γράφημα

  1. ή
  2. > plot(mtcars$hp, mtcars$mpg, col=mtcars$cyl)
    > legend(250,30, text.col=unique(mtcars$cyl), legend=unique(mtcars$cyl))
    Rplot_mtcars_col_text_legend.png Εμφανίζει σε λεζάντα το χρώμα που αντιστοιχεί σε κάθε αριθμό κυλίνδρων (χρωματίζει τον αριθμό)

Περισσότερα σε γράφημα

  1. Πληροφορία από τρεις μεταβλητές, η τρίτη μέσω του συμβόλου
  2. > plot(mtcars$hp, mtcars$mpg, pch=mtcars$cyl)
    > legend(250,30, pch=unique(mtcars$cyl), legend=unique(mtcars$cyl))
    Rplot_mtcars_pch_legend.png

Περισσότερα σε γράφημα

  1. Πληροφορία από τρεις μεταβλητές, η τρίτη μέσω του συμβόλου αλλά με αναγραφή του (πιο πρακτικό).
  2. > plot(mtcars$hp, mtcars$mpg, type="n")
    > text(mtcars$hp, mtcars$mpg, label=mtcars$cyl, col=mtcars$cyl)
    Rplot_mtcars_hp_mpg_text.png

Αποθήκευση διαγραμμάτων (1)

  • Graphics devices στην R είναι το μέρος όπου ένα γράφημα εμφανίζεται.
  • > ?Devices
    devices_help.png Παίρνουμε τη λίστα με τις graphics devices.

Αποθήκευση διαγραμμάτων (2)

  • Οι graphics devices είναι υπεύθυνες για να τυπώσουν ένα γραφικό
    • σ' ένα παράθυρο στον υπολογιστή (screen device),
    • σ' ένα pdf αρχείο (file device),
    • σ' ένα png αρχείο (file device),
    • σ' ένα jpeg αρχείο (file device)
    • κλπ. ανάλογα με το λειτουργικό σύστημα που χρησιμοποιείται.
  • Συνήθως χρησιμοποιούμε την οθόνη για να δούμε ένα γραφικό ή ένα παράθυρο στην οθόνη αλλά αν θέλουμε να τυπώσουμε το γράφημα ή να το ενσωματώσουμε σε ένα έγγραφο χρησιμοποιούμε την file device.

Αποθήκευση διαγραμμάτων (3)

  • Στο RStudio για την αποθήκευση ενός γραφήματος: Aπό το μενού Export στην καρτέλα Plots έχω την επιλογή Save as Image... ή Save as Pdf.
  • Rplot_save_image.png

Αποθήκευση διαγραμμάτων (4)

  • Από την κονσόλα της R (χωρίς την βοήθεια του RStudio) αν θέλουμε να αποθηκεύσουμε ένα γράφημα σε ένα αρχείο θα πρέπει
    • να καλέσουμε το file device
    • και στο τέλος να το κλείσουμε.
    Παράδειγμα:
    > data(faithful)
    > str(faithful)
    'data.frame':	272 obs. of  2 variables:
     $ eruptions: num  3.6 1.8 3.33 2.28 4.53 ...
     $ waiting  : num  79 54 74 62 85 55 88 85 51 85 ...
    
    Φορτώνουμε τα δεδομένα του dataset Faithful. Βλέπουμε την δομή των δεδομένων Faithful. Τα δεδομένα αυτά περιγράφουν τον χρόνο μεταξύ διαδοχικών εκρήξεων και την διάρκεια της κάθε έκρηξης ενός θερμού πίδακα geyser σε πάρκο στις Η.Π.Α.

Αποθήκευση διαγραμμάτων (5)

  • Παράδειγμα συνέχεια:
  • > pdf("faithful.pdf")
    > with(faithful, plot(eruptions, waiting, xlab = "Eruption time (min)", ylab = "Waiting time to next eruption (min)"))
    > title(main = "Old Faithful Geyser data")
    > dev.off()
    null device 
              1
    • Με την συνάρτηση pdf() ανοίγουμε την pdf device και δημιουργούμε ένα αρχείο με το όνομα faithful.pdf στο working directory μας. Αν το ανοίξουμε τώρα το αρχείο παρατηρούμε ότι είναι κενό.
    • Δημιουργούμε το γράφημα από το dataset faithful και αυτό θα πάει στο pdf αρχείο που ανοίξαμε προηγουμένως. Δεν βλέπουμε τίποτα στην οθόνη.
    • Στη συνέχεια συμπληρώνουμε το γράφημα με τίτλο και παρατηρούμε ότι ακόμα είναι κενό το αρχείο faithful.pdf που υπάρχει στο working directory μας.
    • Κλείνουμε την pdf device με την εντολή dev.off() και τότε μπορούμε να ανοίξουμε το αρχείο faithful.pdf και να δούμε το γράφημα. Η dev.off() επιστρέφει το όνομα και το νούμερο της νέα ενεργής device μετά το κλείσιμο της pdf.

    Καλό είναι για να μην κάνουμε λάθος να δοκιμάζουμε αρχικά τον κώδικα για την δημιουργία ενός γραφήματος στην οθόνη δηλαδή να βλέπουμε ότι δημιουργεί το γράφημα που θέλουμε και στην συνέχεια να αποθηκεύουμε τον κώδικα σε αρχείο.

Αποθήκευση διαγραμμάτων (6)

  • Tο γράφημα του αρχείου faithful.pdf :
  • Rplot_faithful.png

Αποθήκευση διαγραμμάτων (7)

  • Εάν έχουμε ένα γράφημα στην οθόνη, μπορούμε να το αποθηκεύσουμε σε ένα αρχείο bitmap με την SavePlot().
  • Αυτό θα σώσει ένα ακριβές pixel προς pixel αντίγραφο του τι είναι στην οθόνη, αλλά κατά πάσα πιθανότητα θα λειτουργήσει μόνο σε Linux και σε υπολογιστές Mac που χρησιμοποιούν βιβλιοθήκη cairo-X11 για τα γραφικά
  • Παράδειγμα:
    > myplot=with(faithful, plot(eruptions, waiting, xlab = "Eruption time (min)", ylab = "Waiting time to next eruption (min)"))
    > myplot=title(main = "Old Faithful Geyser data")
    > savePlot("myplot") 

Αποθήκευση διαγραμμάτων - Είδη αρχείων

  • Υπάρχουν δύο βασικοί τύποι file devices: vector και bitmap devices.
  • Μορφές διανύσματος (vector) :
    • pdf, svg, win.metafile(μόνο στα Windows), postcript
    • Εύκολα αλλάζουν μέγεθος, δεν είναι κατάλληλα για γραφήματα με πολύ μεγάλο αριθμό σημείων
  • Μορφές bitmat:
    • png, jpeg, tiff, bmp(μόνο στα Windows)
    • Κατάλληλα για γραφήματα με πολύ μεγάλο αριθμό σημείων, μπορούν να χρησιμοποιηθούν παντού (στο web), αλλά δεν μπορούν να αλλάξουν μέγεθος

Αντιγραφή γραφημάτων

  • dev.copy(): Αντιγράφει ένα γράφημα από μια device σε άλλη
  • dev.copy2pdf(): Αντιγράφει ένα γράφημα σε PDF αρχείο
  • Παράδειγμα:
    > with(faithful, plot(eruptions, waiting))
    > title(main = "Old Faithful Geyser data")
    > dev.copy(png, file = "geyserplot.png")
    png 
      3 
    > dev.off()
    X11cairo 
           2  
    Δημιουργώ το γράφημα από το dataset faithful στην οθόνη και το συμπληρώνω με τίτλο. Αντιγράφω στη συνέχεια το γράφημα της οθόνης σε ένα αρχείο στο working directory μου με τίτλο geyserplot.png με την συνάρτηση dev.copy() η οποία επιστρέφει το όνομα και τον αριθμό της device στην οποία έγινε η αντιγραφή (στην png). Ακόμη είναι κενό το συγκεκριμένο αρχείο. Τέλος, κλείνω την png device και τότε μπορώ να δω το γράφημα από το αρχείο geyserplot.png. (Η device που έμεινε ενεργή είναι η X11cairo)

Shiny:Ένα web application framework για την R

  • Το Shiny είναι ένα πακέτο της R με το οποίο μπορεί κανείς εύκολα να κατακευάσει αλληλεπιδραστικές web εφαρμογές κατευθείαν από την R.
  • Παράδειγμα:
    > install.packages("shiny")
    Installing package into ‘/home/anna/R/x86_64-pc-linux-gnu-library/3.1’
    (as ‘lib’ is unspecified)
    also installing the dependencies ‘httpuv’, ‘htmltools’, ‘sourcetools’
    ...................................................................................
    * DONE (shiny)
    
    The downloaded source packages are in
    	‘/tmp/Rtmpk0AXHa/downloaded_packages’
    > library("shiny")
    > runExample()
    Valid examples are "01_hello", "02_text", "03_reactivity", "04_mpg", "05_sliders", "06_tabsets", "07_widgets", "08_html", "09_upload", "10_download", "11_timer"
    > runExample("01_hello")
    
    Listening on http://127.0.0.1:3597
    Εγκαθιστούμε το πακέτο "shiny" και το ενεργοποιούμε. Τρέχουμε το παράδειγμα "01_hello" που σχεδιάζει ένα ιστόγραμμα από το dataset faithful της R με ένα ρυθμιζόμενο αριθμό ορθογωνίων που χρησιμοποιούνται στο ιστόγραμμα. Αλλάζοντας ο χρήστης τον αριθμό ορθογωνίων από την μπάρα αλλάζει ταυτόχρονα και το ιστόγραμμα.

Shiny:Ένα web application framework για την R

  • Η εικόνα της web εφαρμογής μέσα από το R studio:
  • shiny.png

Shiny:Ένα web application framework για την R

  • Παράδειγμα 2:
    Επιλέγoντας ο χρήστης dataset και αριθμό παρατηρήσεων, βλέπει το αποτέλεσμα της συνάρτησης summary()
  • > runExample("02_text")
    
    Listening on http://127.0.0.1:3597

Shiny:Ένα web application framework για την R

  • Η εικόνα του 2ου παραδείγματος της web εφαρμογής μέσα από το R studio:
  • R_shiny_02_text.png

Shiny:Ένα web application framework για την R

  • Κάθε Shiny εφαρμογή έχει την ίδια δομή, αποτελείται από δύο script files που βρίσκονται στο ίδιο directory:
    • Ένα user-interface script (ui.R) : ελέγχει το layout και την εμφάνιση της εφαρμογής
    • Ένα server script (server.R) : περιέχει τις οδηγίες που χρειάζεται ο υπολογιστής για να δημιουργήσει την εφαρμογή.
  • Πληροφορίες και tutorials στην ηλεκτρονική διεύθυνση: http://shiny.rstudio.com/