Σχέδιο διασποράς στο R χρησιμοποιώντας ggplot2 (με Παράδειγμα)

Τα γραφήματα είναι το τρίτο μέρος της διαδικασίας ανάλυσης δεδομένων. Το πρώτο μέρος αφορά εξαγωγή δεδομένων, πραγματεύεται το δεύτερο μέρος καθαρισμός και χειρισμός των δεδομένων. Επιτέλους, ο επιστήμονας δεδομένων μπορεί να χρειαστεί κοινοποιεί τα αποτελέσματά του γραφικά.

Η δουλειά του επιστήμονα δεδομένων μπορεί να αναθεωρηθεί στην παρακάτω εικόνα

  • Το πρώτο καθήκον ενός επιστήμονα δεδομένων είναι να ορίσει ένα ερευνητικό ερώτημα. Αυτό το ερευνητικό ερώτημα εξαρτάται από τους στόχους και τους στόχους του έργου.
  • Μετά από αυτό, ένα από τα πιο σημαντικά καθήκοντα είναι η μηχανική χαρακτηριστικών. Ο επιστήμονας δεδομένων πρέπει να συλλέγει, να χειρίζεται και να καθαρίζει τα δεδομένα
  • Όταν ολοκληρωθεί αυτό το βήμα, μπορεί να αρχίσει να εξερευνά το σύνολο δεδομένων. Μερικές φορές, είναι απαραίτητο να τελειοποιήσετε και να αλλάξετε την αρχική υπόθεση λόγω μιας νέας ανακάλυψης.

Οικόπεδο Scatter στο R

  • Όταν ο επεξηγηματικός Η ανάλυση επιτυγχάνεται, ο επιστήμονας δεδομένων πρέπει να εξετάσει την ικανότητα του αναγνώστη να κατανοήσουν τις υποκείμενες έννοιες και μοντέλα.
  • Τα αποτελέσματά του θα πρέπει να παρουσιάζονται σε μορφή που να μπορούν να κατανοήσουν όλοι οι ενδιαφερόμενοι. Μία από τις καλύτερες μεθόδους για να επικοινωνούν τα αποτελέσματα είναι μέσω α γραφική παράσταση.
  • Τα γραφήματα είναι ένα απίστευτο εργαλείο για την απλοποίηση της πολύπλοκης ανάλυσης.

πακέτο ggplot2

Αυτό το μέρος του σεμιναρίου εστιάζει στον τρόπο δημιουργίας γραφημάτων/διαγραμμάτων με το R.

Σε αυτό το σεμινάριο, πρόκειται να χρησιμοποιήσετε το πακέτο ggplot2. Αυτό το πακέτο βασίζεται στη συνεπή βάση του βιβλίου Grammar of graphics που έγραψε ο Wilkinson, 2005. Το ggplot2 είναι πολύ ευέλικτο, ενσωματώνει πολλά θέματα και προδιαγραφές πλοκής σε υψηλό επίπεδο αφαίρεσης. Με το ggplot2, δεν μπορείτε να σχεδιάσετε τρισδιάστατα γραφικά και να δημιουργήσετε διαδραστικά γραφικά.

Στο ggplot2, ένα γράφημα αποτελείται από τα ακόλουθα ορίσματα:

  • ημερομηνία
  • αισθητική χαρτογράφηση
  • γεωμετρικό αντικείμενο
  • στατιστικούς μετασχηματισμούς
  • Ζυγός
  • σύστημα συντεταγμένων
  • ρυθμίσεις θέσης
  • όψη

Θα μάθετε πώς να ελέγχετε αυτά τα ορίσματα στο σεμινάριο.

Η βασική σύνταξη του ggplot2 είναι:

ggplot(data, mapping=aes()) +
geometric object 

arguments: 
data: Dataset used to plot the graph
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common object are:
 
- Point: `geom_point()` 
- Bar: `geom_bar()`
- Line: `geom_line()` 
- Histogram: `geom_histogram()`

Διάγραμμα διασποράς

Ας δούμε πώς λειτουργεί το ggplot με το σύνολο δεδομένων mtcars. Ξεκινάτε σχεδιάζοντας ένα διάγραμμα διασποράς της μεταβλητής mpg και της μεταβλητής drat.

Βασικό οικόπεδο διασποράς

library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point()

Επεξήγηση κώδικα

  • Περνάτε πρώτα το σύνολο δεδομένων mtcars στο ggplot.
  • Μέσα στο όρισμα aes(), προσθέτετε τον άξονα x και τον άξονα y.
  • Το σύμβολο + σημαίνει ότι θέλετε το R να συνεχίσει να διαβάζει τον κώδικα. Κάνει τον κώδικα πιο ευανάγνωστο σπάζοντας τον.
  • Χρησιμοποιήστε το geom_point() για το γεωμετρικό αντικείμενο.

Παραγωγή:

Βασικό Οικόπεδο Σκέδασης

Οικόπεδο διασποράς με ομάδες

Μερικές φορές, μπορεί να είναι ενδιαφέρον να διακρίνουμε τις τιμές με βάση μια ομάδα δεδομένων (δηλ. δεδομένα επιπέδου παράγοντα).

ggplot(mtcars, aes(x = mpg, y = drat)) +
    geom_point(aes(color = factor(gear)))

Επεξήγηση κώδικα

  • Το aes() μέσα στο geom_point() ελέγχει το χρώμα της ομάδας. Η ομάδα πρέπει να είναι μια μεταβλητή παράγοντα. Έτσι, μετατρέπετε το μεταβλητό γρανάζι σε συντελεστή.
  • Συνολικά, έχετε τον κωδικό aes(color = factor(gear)) που αλλάζει το χρώμα των κουκκίδων.

Παραγωγή:

Οικόπεδο διασποράς με ομάδες

Αλλαγή άξονα

Η επανακλιμάκωση των δεδομένων είναι ένα μεγάλο μέρος της δουλειάς του επιστήμονα δεδομένων. Σε σπάνιες περιπτώσεις τα δεδομένα έρχονται σε ωραίο σχήμα καμπάνας. Μια λύση για να κάνετε τα δεδομένα σας λιγότερο ευαίσθητα σε ακραίες τιμές είναι να τα αλλάξετε κλίμακα.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear)))

Επεξήγηση κώδικα

  • Μετασχηματίζετε τις μεταβλητές x και y στο log() απευθείας μέσα στην αντιστοίχιση aes().

Σημειώστε ότι μπορεί να εφαρμοστεί οποιοσδήποτε άλλος μετασχηματισμός, όπως τυποποίηση ή κανονικοποίηση.

Παραγωγή:

Αλλαγή Άξονα

Οικόπεδο διασποράς με προσαρμοσμένες τιμές

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

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear))) +
    stat_smooth(method = "lm",
        col = "#C42126",
        se = FALSE,
        size = 1)
my_graph

Επεξήγηση κώδικα

  • γράφημα: Αποθηκεύετε το γράφημά σας στο γράφημα της μεταβλητής. Είναι χρήσιμο για περαιτέρω χρήση ή αποφυγή πολύ περίπλοκης σειράς κωδικών
  • Το όρισμα stat_smooth() ελέγχει τη μέθοδο εξομάλυνσης
  • μέθοδος = “lm”: Γραμμική παλινδρόμηση
  • col = “#C42126”: Κωδικός για το κόκκινο χρώμα της γραμμής
  • se = FALSE: Μην εμφανίζετε το τυπικό σφάλμα
  • μέγεθος = 1: το μέγεθος της γραμμής είναι 1

Παραγωγή:

Οικόπεδο διασποράς με προσαρμοσμένες τιμές

Σημειώστε ότι υπάρχουν και άλλες μέθοδοι εξομάλυνσης

  • γλαμ
  • gam
  • loess: προεπιλεγμένη τιμή
  • χείλος

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

Μέχρι στιγμής, δεν έχουμε προσθέσει πληροφορίες στα γραφήματα. Τα γραφήματα πρέπει να είναι ενημερωτικά. Ο αναγνώστης θα πρέπει να δει την ιστορία πίσω από την ανάλυση δεδομένων κοιτάζοντας απλώς το γράφημα χωρίς να παραπέμπει πρόσθετη τεκμηρίωση. Ως εκ τούτου, τα γραφήματα χρειάζονται καλές ετικέτες. Μπορείτε να προσθέσετε ετικέτες με τη συνάρτηση labs().

Η βασική σύνταξη για το lab() είναι:

lab(title = "Hello Guru99")
argument:
- title: Control the title. It is possible to change or add title with:			
- subtitle: Add subtitle below title			
- caption: Add caption below the graph			
- x: rename x-axis			
- y: rename y-axis			
Example:lab(title = "Hello Guru99", subtitle = "My first plot")	

Προσθέστε έναν τίτλο

Μια υποχρεωτική πληροφορία για προσθήκη είναι προφανώς ένας τίτλος.

my_graph +
    labs(
        title = "Plot Mile per hours and drat, in log"
         )

Επεξήγηση κώδικα

  • my_graph: Χρησιμοποιείτε το γράφημα που αποθηκεύσατε. Αποφεύγει την επανεγγραφή όλων των κωδικών κάθε φορά που προσθέτετε νέες πληροφορίες στο γράφημα.
  • Τυλίγετε τον τίτλο μέσα στο lab().
  • Κωδικός για το κόκκινο χρώμα της γραμμής
  • se = FALSE: Μην εμφανίζετε το τυπικό σφάλμα
  • μέγεθος = 1: το μέγεθος της γραμμής είναι 1

Παραγωγή:

Προσθέστε έναν τίτλο

Προσθέστε έναν τίτλο με δυναμικό όνομα

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

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση paste() για να εκτυπώσετε στατικό και δυναμικό κείμενο. Η βασική σύνταξη της paste() είναι:

paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma	

Παράδειγμα:

A <-2010
paste("The first year is", A)

Παραγωγή:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Παραγωγή:

## [1] "The first year is 2010 and the last year is 2018"

Μπορείτε να προσθέσετε ένα δυναμικό όνομα στο γράφημά μας, δηλαδή τον μέσο όρο των mpg.

mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
    title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)

Επεξήγηση κώδικα

  • Μπορείτε να δημιουργήσετε τον μέσο όρο των mpg με τη μέση(mtcars$mpg) αποθηκευμένη στη μεταβλητή mean_mpg
  • Χρησιμοποιείτε την επικόλληση () με mean_mpg για να δημιουργήσετε έναν δυναμικό τίτλο που επιστρέφει τη μέση τιμή του mpg

Παραγωγή:

Προσθέστε έναν τίτλο με δυναμικό όνομα

Προσθέστε έναν υπότιτλο

Δύο επιπλέον λεπτομέρειες μπορούν να κάνουν το γράφημά σας πιο σαφές. Μιλάς για τον υπότιτλο και τη λεζάντα. Ο υπότιτλος βρίσκεται ακριβώς κάτω από τον τίτλο. Η λεζάντα μπορεί να ενημερώσει για το ποιος έκανε τον υπολογισμό και την πηγή των δεδομένων.

my_graph +
    labs(
        title =
        "Relation between Mile per hours and drat",
        subtitle =
        "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Επεξήγηση κώδικα

  • Μέσα στο lab(), προσθέσατε:
    • τίτλος = "Σχέση μεταξύ μιλίου ανά ώρα και drat": Προσθήκη τίτλου
    • subtitle = "Relationship breakdown by gear class": Προσθήκη υπότιτλου
    • caption = "Υπολογισμός των ίδιων των συγγραφέων: Προσθήκη λεζάντας
    • Διαχωρίζετε κάθε νέα πληροφορία με κόμμα, ,
  • Σημειώστε ότι σπάτε τις γραμμές του κώδικα. Δεν είναι υποχρεωτικό και βοηθάει μόνο στην πιο εύκολη ανάγνωση του κώδικα

Παραγωγή:

Προσθέστε υπότιτλους

Μετονομάστε τον άξονα x και τον άξονα y

Οι ίδιες οι μεταβλητές στο σύνολο δεδομένων ενδέχεται να μην είναι πάντα σαφείς ή κατά σύμβαση να χρησιμοποιούν το _ όταν υπάρχουν πολλές λέξεις (δηλ. GDP_CAP). Δεν θέλετε να εμφανίζεται τέτοιο όνομα στο γράφημά σας. Είναι σημαντικό να αλλάξετε το όνομα ή να προσθέσετε περισσότερες λεπτομέρειες, όπως οι μονάδες.

my_graph +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Επεξήγηση κώδικα

  • Μέσα στο lab(), προσθέσατε:
    • x = «Ορισμός Drat»: Αλλάξτε το όνομα του άξονα x
    • y = "Μίλι ανά ώρες": Αλλάξτε το όνομα του άξονα y

Παραγωγή:

Μετονομάστε τα x-Axis και y-Axis

Ελέγξτε τη ζυγαριά

Μπορείτε να ελέγξετε την κλίμακα του άξονα.

Η συνάρτηση seq() είναι βολική όταν χρειάζεται να δημιουργήσετε μια ακολουθία αριθμών. Η βασική σύνταξη είναι:

seq(begin, last, by = x)
arguments:
- begin: First number of the sequence
- last: Last number of the sequence
- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`	

Για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα εύρος από το 0 έως το 12 με ένα βήμα 3, θα έχετε τέσσερις αριθμούς, 0 4 8 12

seq(0, 12,4)

Παραγωγή:

## [1]  0  4  8 12

Μπορείτε να ελέγξετε την κλίμακα του άξονα x και του άξονα y όπως παρακάτω

my_graph +
    scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
    scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Επεξήγηση κώδικα

  • Η συνάρτηση scale_y_continuous() ελέγχει το άξονα y
  • Η συνάρτηση scale_x_continuous() ελέγχει το άξονας x.
  • Η παράμετρος διαλείμματα ελέγχει τη διαίρεση του άξονα. Μπορείτε να προσθέσετε χειροκίνητα την ακολουθία αριθμών ή να χρησιμοποιήσετε τη συνάρτηση seq():
    • seq(1, 3.6, by = 0.2): Δημιουργήστε έξι αριθμούς από το 2.4 έως το 3.4 με ένα βήμα 3
    • seq(1, 1.6, by = 0.1): Δημιουργήστε επτά αριθμούς από το 1 έως το 1.6 με βήμα 1

Παραγωγή:

Ελέγξτε τη ζυγαριά

θέμα

Τέλος, το R μας επιτρέπει να προσαρμόσουμε την πλοκή με διαφορετικά θέματα. Η βιβλιοθήκη ggplot2 περιλαμβάνει οκτώ θέματα:

  • theme_bw()
  • theme_light()
  • theme_classis()
  • theme_linedraw()
  • theme_dark()
  • theme_minimal()
  • theme_gray()
  • theme_void()
my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Παραγωγή:

θέμα

Αποθήκευση Οικόπεδων

Μετά από όλα αυτά τα βήματα, ήρθε η ώρα να αποθηκεύσετε και να μοιραστείτε το γράφημά σας. Προσθέτετε το ggsave('NAME OF THE FILE) αμέσως μετά τη σχεδίαση του γραφήματος και θα αποθηκευτεί στον σκληρό δίσκο.

Το γράφημα αποθηκεύεται στον κατάλογο εργασίας. Για να ελέγξετε τον κατάλογο εργασίας, μπορείτε να εκτελέσετε αυτόν τον κώδικα:

directory <-getwd()
directory

Ας σχεδιάσουμε το φανταστικό σας γράφημα, ας το αποθηκεύσουμε και ας ελέγξουμε την τοποθεσία

my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Παραγωγή:

Αποθήκευση Οικόπεδων

ggsave("my_fantastic_plot.png")

Παραγωγή:

## Saving 5 x 4 in image

Σημείωση: Μόνο για παιδαγωγικούς σκοπούς, δημιουργήσαμε μια συνάρτηση που ονομάζεται open_folder() για να ανοίξει ο φάκελος καταλόγου για εσάς. Απλά πρέπει να εκτελέσετε τον παρακάτω κώδικα και να δείτε πού είναι αποθηκευμένη η εικόνα. Θα πρέπει να δείτε ένα αρχείο με όνομα my_fantastic_plot.png.

# Run this code to create the
function
open_folder <- function(dir) {
    if (.Platform['OS.type'] == "windows") {
        shell.exec(dir)
    } else {
        system(paste(Sys.getenv("R_BROWSER"), dir))
    }
}

# Call the
function to open the folder open_folder(directory)

Σύνοψη

Μπορείτε να συνοψίσετε τα ορίσματα για να δημιουργήσετε ένα διάγραμμα διασποράς στον παρακάτω πίνακα:

Σκοπός Κώδικας
Βασικό οικόπεδο διασποράς
ggplot(df, aes(x = x1, y = y)) + geom_point()
Οικόπεδο διασποράς με ομάδα χρωμάτων
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")
Προσθέστε προσαρμοσμένες τιμές
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))
Προσθέστε τίτλο
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
Προσθήκη υπότιτλων
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
Μετονομασία x
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")
Μετονομασία y
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")
Ελέγξτε την κλίμακα
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)
Δημιουργία αρχείων καταγραφής
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()
θέμα
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()
Αποθήκευση
ggsave("my_fantastic_plot.png")