Διάγραμμα διασποράς σε R χρησιμοποιώντας ggplot2 με παράδειγμα

⚡ Έξυπνη Σύνοψη

Το διάγραμμα διασποράς σε R χρησιμοποιώντας το ggplot2 αντιστοιχίζει δύο συνεχείς μεταβλητές στους άξονες x και y με τη μέθοδο geom_point(). Αυτή η αναλυτική παρουσίαση καλύπτει την ομάδα.ping ανά χρώμα, μετασχηματισμούς λογαρίθμου, προσαρμοσμένες γραμμές παλινδρόμησης, ετικέτες, όψεις, διορθώσεις υπερσχεδίων, κλίμακες, θέματα και αποθήκευση.

  • 📍 Βασική σύνταξη: Η ggplot(mtcars, aes(x = drat, y = mpg)) + geom_point() κατασκευάζει το διάγραμμα από δεδομένα, χάρτηping, και γεωμετρία.
  • 🎨 Χρωματισμός ομάδας: Η συνάρτηση aes(color = factor(gear)) μέσα στο geom_point() χωρίζει τα σημεία σε ένα χρώμα ανά επίπεδο παράγοντα.
  • 📈 Γραμμές τάσης: Η stat_smooth(method = “lm”) επικαλύπτει μια προσαρμοσμένη γραμμή παλινδρόμησης και η se = FALSE αφαιρεί τη ζώνη εμπιστοσύνης.
  • 🗂️ Faceting: Η facet_wrap() σχεδιάζει ένα πάνελ ανά ομάδα σε μια κοινόχρηστη κλίμακα, κάτι που είναι καλύτερο από το να συνωστίζουμε κάθε σειρά σε ένα γράφημα.
  • 🔁 Υπερβολική σχεδίαση: Χαμηλώστε το άλφα, τρεμοπαίξτε τα σημεία ή μεταβείτε σε geom_hex() όταν οι δείκτες συσσωρεύονται ο ένας πάνω στον άλλο.
  • 💾 Εξαγωγή: Η ggsave(“plot.png”, πλάτος = 8, ύψος = 5, dpi = 300) γράφει το τελευταίο διάγραμμα στον κατάλογο εργασίας.

Σχεδίαση διασποράς σε R χρησιμοποιώντας ggplot2

Γιατί τα Γραφήματα Είναι Σημαντικά στην Ανάλυση Δεδομένων

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

Η ροή εργασίας ενός επιστήμονα δεδομένων συνοψίζεται στην παρακάτω εικόνα.

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

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

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

Το υπόλοιπο αυτού του σεμιναρίου κατασκευάζει αυτά τα γραφήματα με το πακέτο ggplot2.

Το πακέτο ggplot2

Αυτό το σεμινάριο επικεντρώνεται στη δημιουργία γραφημάτων σε R με το ggplot2.

Σε αυτό το σεμινάριο, θα χρησιμοποιήσετε το πακέτο ggplot2. Το πακέτο υλοποιεί τη Γραμματική των Γραφικών που περιέγραψε ο Leland Wilkinson το 2005. Το ggplot2 είναι ευέλικτο, διαθέτει πολλά θέματα και σας επιτρέπει να καθορίσετε ένα γράφημα σε υψηλό επίπεδο abs.tracΣημειώστε ότι δεν παράγει τρισδιάστατα ή διαδραστικά γραφικά. Αυτά απαιτούν πακέτα όπως plotly ή rgl.

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

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

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

Η βασική σύνταξη του 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()`

Πώς να δημιουργήσετε ένα διάγραμμα διασποράς σε R

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

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

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

Code εξήγηση

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

Παραγωγή:

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

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

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

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

Code εξήγηση

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

Παραγωγή:

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

Αλλαγή της κλίμακας άξονα με μετασχηματισμό λογαριθμίου

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

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

Code εξήγηση

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

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

Παραγωγή:

Αλλαγή Άξονα

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

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

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

Code εξήγηση

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

Παραγωγή:

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

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

  • γλαμ
  • gam
  • loess: η προεπιλογή για λιγότερες από 1,000 παρατηρήσεις
  • rlm: στιβαρό γραμμικό μοντέλο, από το πακέτο MASS

Πριν από τη διαμόρφωση του γραφήματος, αξίζει να γνωρίζετε πότε ένα διάγραμμα διασποράς είναι η σωστή επιλογή.

Διάγραμμα διασποράς vs Γραμμικό διάγραμμα vs BubblΔιάγραμμα e σε R

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

Κριτήρια Διάγραμμα διασποράς Διάγραμμα γραμμής Bubblε Διάγραμμα
Δείχνει Συσχέτιση μεταξύ δύο μεταβλητών Αλλαγή μιας μεταβλητής σε έναν διατεταγμένο άξονα Συσχέτιση συν ένα τρίτο μέγεθος
Άξονας Χ Οποιαδήποτε συνεχής μεταβλητή Συνήθως χρόνος ή άλλη διατεταγμένη κλίμακα Οποιαδήποτε συνεχής μεταβλητή
Σειρά σημείων Ασχετος Τα κρίσιμα σημεία είναι συνδεδεμένα Ασχετος
Τρίτη μεταβλητή Μέσω χρώματος ή σχήματος Μέσω ξεχωριστών γραμμών Μέγεθος σημείου διέλευσης
κλήση ggplot2 geom_point() geom_line() geom_point(aes(μέγεθος = z))

Η σύνδεση σημείων διασποράς με μια γραμμή όταν ο άξονας x δεν έχει φυσική τάξη είναι ένα συνηθισμένο λάθος: υπονοεί μια ακολουθία που δεν υπάρχει. Κρατήστε την geom_line() για διατεταγμένους άξονες όπως οι ημερομηνίες. Για κατανομές μίας μόνο μεταβλητής, χρησιμοποιήστε ένα οικόπεδο κουτιού Αντιθέτως.

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

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

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

labs(title = "Hello Guru99")
arguments:
- title: Main title displayed above the plot
- subtitle: Secondary line below the title
- caption: Note below the plot, usually the data source
- x: Rename the x-axis
- y: Rename the y-axis
- color / fill: Rename the legend

Example: labs(title = "Hello Guru99", subtitle = "My first plot")

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

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

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

Code εξήγηση

  • my_graph: Χρησιμοποιείτε το γράφημα που αποθηκεύσατε. Αποφεύγει την επανεγγραφή όλων των κωδικών κάθε φορά που προσθέτετε νέες πληροφορίες στο γράφημα.
  • Τυλίγετε τον τίτλο μέσα σε labs().

Παραγωγή:

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

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

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

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση 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)
)

Code εξήγηση

  • Μπορείτε να δημιουργήσετε τον μέσο όρο των 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"
    )

Code εξήγηση

  • Μέσα στο labs(), προσθέσατε:
    • τίτλος = "Σχέση μεταξύ μιλίου ανά ώρα και 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"
    )

Code εξήγηση

  • Μέσα στο labs(), προσθέσατε:
    • 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 με βήμα 4 επιστρέφει τέσσερις αριθμούς: 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"
    )

Code εξήγηση

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

Παραγωγή:

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

θέμα

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

  • theme_bw()
  • theme_light()
  • theme_classic()
  • 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.png”) αμέσως μετά τη σχεδίαση και η εικόνα εγγράφεται στο δίσκο.

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

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)

Πώς να δημιουργήσετε διαγράμματα διασποράς με facet_wrap() σε R

Η faceting είναι ένα από τα οκτώ στοιχεία του ggplot2 που αναφέρθηκαν νωρίτερα και είναι η πιο ξεκάθαρη απάντηση σε ένα γεμάτο γράφημα. Αντί να συμπιέζει κάθε ομάδα σε ένα πάνελ, το ggplot2 σχεδιάζει ένα μικρό πολλαπλάσιο για κάθε επίπεδο μιας μεταβλητής, όλα στις ίδιες κλίμακες, έτσι ώστε τα πάνελ να παραμένουν συγκρίσιμα.

# One panel per gear count
ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point() +
    facet_wrap(~ gear) +
    theme_classic()

Τρία επιχειρήματα κάνουν το μεγαλύτερο μέρος της δουλειάς.

  • ncol or nrow: επιβάλλει στα πάνελ μια δεδομένη διάταξη, για παράδειγμα facet_wrap(~ gear, ncol = 2).
  • Ζυγός: «σταθερό» από προεπιλογή, έτσι ώστε κάθε πάνελ να μοιράζεται ένα εύρος άξονα. Χρησιμοποιήστε «free_y» ή «free» όταν οι ομάδες διαφέρουν σημαντικά σε μέγεθος, αλλά να έχετε υπόψη σας ότι οι ελεύθερες κλίμακες καθιστούν την οπτική σύγκριση μεταξύ των πάνελ παραπλανητική.
  • ετικέτα: αντικαθιστά το επίπεδο του ακατέργαστου παράγοντα σε κάθε λωρίδα, για παράδειγμα labeller = label_both για να εκτυπώσει "gear: 4" αντί για "4".

Δύο ομάδεςping μεταβλητές. Χρησιμοποιήστε την facet_grid() για να δημιουργήσετε έναν πίνακα από πάνελ, με την πρώτη μεταβλητή να εκτείνεται σε γραμμές και τη δεύτερη σε στήλες:

ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point(aes(color = factor(cyl))) +
    facet_grid(am ~ gear) +
    theme_classic()

Όψεις ή χρώματα; Το χρώμα λειτουργεί καλά έως και περίπου τέσσερις ομάδες σε ένα γράφημα με περιορισμένη επικάλυψη. Πέρα από αυτό, ή όποτε οι ομάδες επικαλύπτονται σε μεγάλο βαθμό, η όψεις είναι πιο εύκολη στην ανάγνωση επειδή κάθε πίνακας φέρει μόνο τα δικά του σημεία. Μπορείτε να συνδυάσετε και τα δύο: όψεις κατά μία μεταβλητή και χρώμα κατά μία άλλη, όπως στο παράδειγμα facet_grid() παραπάνω.

Πώς να χειριστείτε την υπερδιαμόρφωση σε διαγράμματα διασποράς R

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

1. Μειώστε την αδιαφάνεια. Η φθηνότερη λύση. Επικάλυψηping τα σημεία σκουραίνουν φυσικά, έτσι η πυκνότητα γίνεται ορατή:

ggplot(diamonds, aes(x = carat, y = price)) +
    geom_point(alpha = 0.05) +
    theme_classic()

2. Διακριτές τιμές jitter. Όταν μια μεταβλητή λαμβάνει μόνο μια χούφτα τιμών, τα σημεία προσγειώνονται στις ίδιες συντεταγμένες. Μια μικρή τυχαία μετατόπιση τα χωρίζει:

ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
    geom_jitter(width = 0.15, height = 0) +
    theme_classic()

Ορίστε ύψος = 0, έτσι ώστε οι τιμές y, οι οποίες φέρουν τις πραγματικές πληροφορίες, να μην αλλάζουν ποτέ.

3. Πετάξτε το αεροπλάνο στον κάδο. Για μεγάλα σύνολα δεδομένων, μετρήστε τις παρατηρήσεις ανά κελί και αντιστοιχίστε την μέτρηση με χρώμα. Οι εξαγωνικοί κάδοι αποφεύγουν τα οπτικά τεχνουργήματα που παράγουν οι τετράγωνοι κάδοι:

ggplot(diamonds, aes(x = carat, y = price)) +
    geom_hex(bins = 40) +
    theme_classic()

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

ggplot(diamonds, aes(x = carat, y = price)) +
    geom_point(alpha = 0.05) +
    geom_density_2d(color = "#C42126") +
    theme_classic()

Κατά γενικό κανόνα, η μέθοδος alpha χειρίζεται μερικές χιλιάδες σημεία, η εξαγωνική binning χειρίζεται δεκάδες χιλιάδες και η δειγματοληψία των δεδομένων με την dplyr::slice_sample() είναι η πιο πρακτική επιλογή πέρα ​​από αυτό.

Διάγραμμα διασποράς στο R: Code Αναφορά

Ο παρακάτω πίνακας παραθέτει την κλήση ggplot2 για κάθε επιλογή που καλύπτεται παραπάνω:

Σκοπός Code
Βασικό οικόπεδο διασποράς
ggplot(df, aes(x = x1, y = y)) + geom_point()
Διάγραμμα διασποράς με ομάδα χρωμάτων
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x2)))
Προσθέστε προσαρμοσμένες τιμές
ggplot(df, aes(x = x1, y = y)) + geom_point() + stat_smooth(method = "lm")
Προσθέστε τίτλο
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()
Όψη από μια ομάδα
ggplot(df, aes(x = x1, y = y)) + geom_point() + facet_wrap(~ x2)
Χειρισμός υπερσχεδίασης
ggplot(df, aes(x = x1, y = y)) + geom_point(alpha = 0.3)
Αποθήκευση
ggsave("my_fantastic_plot.png")

Συχνές Ερωτήσεις

Η geom_point() σχεδιάζει κάθε παρατήρηση στις ακριβείς συντεταγμένες της. Η geom_jitter() προσθέτει μια μικρή τυχαία μετατόπιση έτσι ώστε τα σημεία που μοιράζονται την ίδια τιμή να γίνονται διακριτά, κάτι που έχει σημασία όταν ένας άξονας περιέχει διακριτές τιμές.

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

Προσθέστε stat_smooth(method = “lm”) ή geom_smooth(method = “lm”) μετά το geom_point(). Ορίστε se = FALSE για να αποκρύψετε τη ζώνη εμπιστοσύνης και χρησιμοποιήστε method = “loess” για έναν μη γραμμικό εξομαλυντή.

Τα διαγράμματα διασποράς αποκαλύπτουν τη συσχέτιση χαρακτηριστικών και τις ακραίες τιμές πριν από την εκπαίδευση και αποτελούν τον τυπικό τρόπο εμφάνισης των προβλεπόμενων τιμών σε σχέση με τις πραγματικές ή για την οπτικοποίηση συστάδων μετά τη μείωση των διαστάσεων με PCA ή t-SNE.

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

Συνοψίστε αυτήν την ανάρτηση με: