Διάγραμμα ράβδων και ιστόγραμμα σε R (με Παράδειγμα)
Ένα γράφημα ράβδων είναι ένας πολύ καλός τρόπος για την εμφάνιση κατηγορικών μεταβλητών στον άξονα x. Αυτός ο τύπος γραφήματος υποδηλώνει δύο όψεις στον άξονα y.
- Το πρώτο μετράει τον αριθμό των εμφανίσεων μεταξύ των ομάδων.
- Το δεύτερο δείχνει μια συνοπτική στατιστική (ελάχ., μέγιστο, μέσος όρος κ.λπ.) μιας μεταβλητής στον άξονα y.
Θα χρησιμοποιήσετε το σύνολο δεδομένων mtcars με τις ακόλουθες μεταβλητές:
- κύλινδρος: Ο αριθμός του κυλίνδρου στο αυτοκίνητο. Αριθμητική μεταβλητή
- am: Τύπος μετάδοσης. 0 για αυτόματο και 1 για χειροκίνητο. Αριθμητική μεταβλητή
- mpg: Μίλια ανά γαλόνι. Αριθμητική μεταβλητή
Πώς να δημιουργήσετε γράφημα ράβδων
Για να δημιουργήσετε γράφημα στο R, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη ggplot που δημιουργεί γραφήματα έτοιμα για δημοσίευση. Η βασική σύνταξη αυτής της βιβλιοθήκης είναι:
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 objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Σε αυτό το σεμινάριο, σας ενδιαφέρει το γεωμετρικό αντικείμενο geom_bar() που δημιουργεί το γράφημα ράβδων.
Διάγραμμα ράβδων: μέτρηση
Το πρώτο σας γράφημα δείχνει τη συχνότητα του κυλίνδρου με geom_bar(). Ο παρακάτω κώδικας είναι η πιο βασική σύνταξη.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Επεξήγηση κώδικα
- Περνάτε το σύνολο δεδομένων mtcars στο ggplot.
- Μέσα στο όρισμα aes(), προσθέτετε τον άξονα x ως μεταβλητή παράγοντα (cyl)
- Το σύμβολο + σημαίνει ότι θέλετε το R να συνεχίσει να διαβάζει τον κώδικα. Κάνει τον κώδικα πιο ευανάγνωστο σπάζοντας τον.
- Χρησιμοποιήστε το geom_bar() για το γεωμετρικό αντικείμενο.
Παραγωγή:
Σημείωση: βεβαιωθείτε ότι έχετε μετατρέψει τις μεταβλητές σε παράγοντα διαφορετικά το R αντιμετωπίζει τις μεταβλητές ως αριθμητικές. Δείτε το παρακάτω παράδειγμα.
Προσαρμόστε το γράφημα
Τέσσερα ορίσματα μπορούν να διαβιβαστούν για την προσαρμογή του γραφήματος:
- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"` - `alpha`: Control density of the color - `fill`: Change the color of the bar - `size`: Control the size the bar
Αλλάξτε το χρώμα των ράβδων
Μπορείτε να αλλάξετε το χρώμα των ράβδων. Σημειώστε ότι τα χρώματα των ράβδων είναι όλα παρόμοια.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Επεξήγηση κώδικα
- Τα χρώματα των ράβδων ελέγχονται από την αντιστοίχιση aes() μέσα στο γεωμετρικό αντικείμενο (δηλαδή όχι στο ggplot()). Μπορείτε να αλλάξετε το χρώμα με τα ορίσματα γέμισης. Εδώ, επιλέγετε το κοραλί χρώμα.
Παραγωγή:
Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό:
grDevices::colors()
για να δείτε όλα τα χρώματα που είναι διαθέσιμα στο R. Υπάρχουν περίπου 650 χρώματα.
Αλλάξτε την ένταση
Μπορείτε να αυξήσετε ή να μειώσετε την ένταση του χρώματος των ράβδων
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Επεξήγηση κώδικα
- Για να αυξήσετε/μειώσετε την ένταση της γραμμής, μπορείτε να αλλάξετε την τιμή του άλφα. Ένα μεγάλο άλφα αυξάνει την ένταση και το χαμηλό άλφα μειώνει την ένταση. Το άλφα κυμαίνεται από 0 έως 1. Εάν είναι 1, τότε το χρώμα είναι το ίδιο με την παλέτα. Αν 0, το χρώμα είναι λευκό. Επιλέγετε άλφα = 0.1.
Παραγωγή:
Χρώμα ανά ομάδες
Μπορείτε να αλλάξετε τα χρώματα των ράβδων, δηλαδή ένα διαφορετικό χρώμα για κάθε ομάδα. Για παράδειγμα, η μεταβλητή κυλίνδρου έχει τρία επίπεδα, τότε μπορείτε να σχεδιάσετε το γράφημα ράβδων με τρία χρώματα.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Επεξήγηση κώδικα
- Το όρισμα fill μέσα στην aes() επιτρέπει την αλλαγή του χρώματος της γραμμής. Αλλάζετε το χρώμα ορίζοντας τη μεταβλητή fill = x-axis. Στο παράδειγμά σας, η μεταβλητή του άξονα x είναι cyl. γέμισμα = συντελεστής (κύλινδρος)
Παραγωγή:
Προσθέστε μια ομάδα στις μπάρες
Μπορείτε να χωρίσετε περαιτέρω τον άξονα y με βάση άλλο επίπεδο παράγοντα. Για παράδειγμα, μπορείτε να μετρήσετε τον αριθμό του αυτόματου και χειροκίνητου κιβωτίου ταχυτήτων με βάση τον τύπο του κυλίνδρου.
Θα προχωρήσετε ως εξής:
- Βήμα 1: Δημιουργήστε το πλαίσιο δεδομένων με το σύνολο δεδομένων mtcars
- Βήμα 2: Επισημάνετε τη μεταβλητή am με auto για αυτόματο κιβώτιο ταχυτήτων και man για χειροκίνητο κιβώτιο ταχυτήτων. Μετατρέψτε τα am και cyl ως παράγοντα έτσι ώστε να μην χρειάζεται να χρησιμοποιήσετε το factor() στη συνάρτηση ggplot().
- Βήμα 3: Σχεδιάστε το διάγραμμα ράβδων για να μετρήσετε τον αριθμό μετάδοσης ανά κύλινδρο
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Έχετε έτοιμο το σύνολο δεδομένων, μπορείτε να σχεδιάσετε το γράφημα.
# Βήμα 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Επεξήγηση κώδικα
- Η ggpplot() περιέχει τα δεδομένα δεδομένων και την aes().
- Στο aes() συμπεριλαμβάνετε τη μεταβλητή x-axis και ποια μεταβλητή απαιτείται για να γεμίσει τη γραμμή (δηλ. am)
- geom_bar(): Δημιουργήστε το γράφημα ράβδων
Παραγωγή:
Η αντιστοίχιση θα γεμίσει τη γραμμή με δύο χρώματα, ένα για κάθε επίπεδο. Είναι εύκολο να αλλάξετε την ομάδα επιλέγοντας άλλες μεταβλητές παραγόντων στο σύνολο δεδομένων.
Γράφημα ράβδων σε ποσοστό
Μπορείτε να οπτικοποιήσετε τη γραμμή σε ποσοστό αντί για την πρωτογενή καταμέτρηση.
# Γράφημα ράβδων σε ποσοστό
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Επεξήγηση κώδικα
- Χρησιμοποιήστε θέση = "πλήρωση" στο όρισμα geom_bar() για να δημιουργήσετε ένα γραφικό με ποσοστό στον άξονα y.
Παραγωγή:
Μπάρες δίπλα δίπλα
Είναι εύκολο να σχεδιάσετε το διάγραμμα ράβδων με τη μεταβλητή ομάδας δίπλα-δίπλα.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Επεξήγηση κώδικα
- position=position_dodge(): Λέει ρητά πώς να τακτοποιήσετε τις ράβδους
Παραγωγή:
Ιστόγραμμα
Στο δεύτερο μέρος του σεμιναρίου του ραβδωτού γραφήματος, μπορείτε να αναπαραστήσετε την ομάδα μεταβλητών με τιμές στον άξονα y.
Ο στόχος σας είναι να δημιουργήσετε ένα γράφημα με το μέσο μίλι ανά γαλόνι για κάθε τύπο κυλίνδρου. Για να σχεδιάσετε ένα κατατοπιστικό γράφημα, θα ακολουθήσετε τα εξής βήματα:
- Βήμα 1: Δημιουργήστε μια νέα μεταβλητή με το μέσο μίλι ανά γαλόνι ανά κύλινδρο
- Βήμα 2: Δημιουργήστε ένα βασικό ιστόγραμμα
- Βήμα 3: Αλλάξτε τον προσανατολισμό
- Βήμα 4: Αλλάξτε το χρώμα
- Βήμα 5: Αλλάξτε το μέγεθος
- Βήμα 6: Προσθέστε ετικέτες στο γράφημα
Βήμα 1) Δημιουργήστε μια νέα μεταβλητή
Δημιουργείτε ένα πλαίσιο δεδομένων με το όνομα data_histogram το οποίο απλώς επιστρέφει τα μέσα μίλια ανά γαλόνι από τον αριθμό των κυλίνδρων στο αυτοκίνητο. Ονομάζετε αυτή τη νέα μεταβλητή mean_mpg και στρογγυλεύετε τη μέση τιμή με δύο δεκαδικά.
# Βήμα 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Βήμα 2) Δημιουργήστε ένα βασικό ιστόγραμμα
Μπορείτε να σχεδιάσετε το ιστόγραμμα. Δεν είναι έτοιμο να επικοινωνήσει για να παραδοθεί στον πελάτη, αλλά μας δίνει μια διαίσθηση για την τάση.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Επεξήγηση κώδικα
- Η aes() έχει τώρα δύο μεταβλητές. Η μεταβλητή cyl αναφέρεται στον άξονα x και η μέση_mpg είναι ο άξονας y.
- Πρέπει να περάσετε το όρισμα stat=”identity” για να αναφέρετε τη μεταβλητή στον άξονα y ως αριθμητική τιμή. Το geom_bar χρησιμοποιεί το stat=”bin” ως προεπιλεγμένη τιμή.
Παραγωγή:
Βήμα 3) Αλλάξτε τον προσανατολισμό
Αλλάζετε τον προσανατολισμό του γραφήματος από κάθετο σε οριζόντιο.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Επεξήγηση κώδικα
- Μπορείτε να ελέγξετε τον προσανατολισμό του γραφήματος με το coord_flip().
Παραγωγή:
Βήμα 4) Αλλάξτε το χρώμα
Μπορείτε να διαφοροποιήσετε τα χρώματα των ράβδων σύμφωνα με το επίπεδο παράγοντα της μεταβλητής του άξονα x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Επεξήγηση κώδικα
- Μπορείτε να σχεδιάσετε το γράφημα ανά ομάδες με την αντιστοίχιση fill= cyl. Το R φροντίζει αυτόματα τα χρώματα με βάση τα επίπεδα της μεταβλητής κυλίνδρου
Παραγωγή:
Βήμα 5) Αλλάξτε το μέγεθος
Για να κάνετε το γράφημα να φαίνεται πιο όμορφο, μειώνετε το πλάτος της γραμμής.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Επεξήγηση κώδικα
- Το όρισμα πλάτους μέσα στη geom_bar() ελέγχει το μέγεθος της γραμμής. Η μεγαλύτερη τιμή αυξάνει το πλάτος.
- Σημείωση, αποθηκεύετε το γράφημα στο γράφημα της μεταβλητής. Το κάνετε επειδή το επόμενο βήμα δεν θα αλλάξει τον κωδικό του γραφήματος της μεταβλητής. Βελτιώνει την αναγνωσιμότητα του κώδικα.
Παραγωγή:
Βήμα 6) Προσθέστε ετικέτες στο γράφημα
Το τελευταίο βήμα συνίσταται στην προσθήκη της τιμής της μεταβλητής mean_mpg στην ετικέτα.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Επεξήγηση κώδικα
- Η συνάρτηση geom_text() είναι χρήσιμη για τον έλεγχο της αισθητικής του κειμένου.
- label=: Προσθέστε μια ετικέτα μέσα στις γραμμές
- mean_mpg: Χρησιμοποιήστε τη μεταβλητή mean_mpg για την ετικέτα
- Το hjust ελέγχει τη θέση της ετικέτας. Οι τιμές κλειστές στο 1 εμφανίζουν την ετικέτα στο επάνω μέρος της γραμμής και οι υψηλότερες τιμές φέρνουν την ετικέτα στο κάτω μέρος. Εάν ο προσανατολισμός του γραφήματος είναι κατακόρυφος, αλλάξτε το hjust σε vjust.
- color=”white”: Αλλάξτε το χρώμα του κειμένου. Εδώ χρησιμοποιείτε το λευκό χρώμα.
- size=3: Ορίστε το μέγεθος του κειμένου.
Παραγωγή:
Περίληψη
Ένα γράφημα ράβδων είναι χρήσιμο όταν ο άξονας x είναι μια κατηγορική μεταβλητή. Ο άξονας y μπορεί να είναι είτε μέτρηση είτε συνοπτική στατιστική. Ο παρακάτω πίνακας συνοψίζει τον τρόπο ελέγχου του ραβδωτού γραφήματος με το ggplot2:
Σκοπός | Κώδικας |
---|---|
Κόμης |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Μετρήστε με διαφορετικό χρώμα γεμίσματος |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Μετρήστε με ομάδες, στοιβαγμένες |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Μετρήστε με ομάδες, δίπλα δίπλα |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Καταμέτρηση με ομάδες, στοιβαγμένες σε % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Αξίες |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |