Ραβδόγραμμα & Ιστόγραμμα σε R με παράδειγμα
⚡ Έξυπνη Σύνοψη
Τα ραβδογράμματα και τα ιστογράμματα σε R κατασκευάζονται με το ggplot2, χρησιμοποιώντας geom_bar() για κατηγορικές μετρήσεις και geom_histogram() για συνεχείς κατανομές. Αυτή η αναλυτική παρουσίαση προσαρμόζει το χρώμα, την ομάδαping, στοίβαξη, προσανατολισμός, binning και ετικέτες εντός ράβδου στο σύνολο δεδομένων mtcars.

Τι είναι ένα ραβδόγραμμα στην R;
Ένα γράφημα ράβδων είναι ένας πολύ καλός τρόπος για την εμφάνιση κατηγορικών μεταβλητών στον άξονα x. Αυτός ο τύπος γραφήματος υποδηλώνει δύο όψεις στον άξονα y.
- Το πρώτο μετράει τον αριθμό των εμφανίσεων σε κάθε ομάδα.
- Το δεύτερο δείχνει μια συνοπτική στατιστική τιμή (ελάχιστο, μέγιστο, μέσος όρος και ούτω καθεξής) μιας μεταβλητής στον άξονα y.
Θα χρησιμοποιήσετε το σύνολο δεδομένων mtcars, το οποίο έχει τις ακόλουθες μεταβλητές:
- κύλινδρος: Ο αριθμός του κυλίνδρου στο αυτοκίνητο. Αριθμητική μεταβλητή
- am: Τύπος μετάδοσης. 0 για αυτόματο και 1 για χειροκίνητο. Αριθμητική μεταβλητή
- mpg: Μίλια ανά γαλόνι. Αριθμητική μεταβλητή
Επειδή ένα ιστόγραμμα μοιάζει τόσο πολύ, αξίζει να διευθετήσετε τη διαφορά πριν γράψετε οποιονδήποτε κώδικα.
Ραβδόγραμμα έναντι Ιστογράμματος σε R: Βασικές διαφορές
Τα δύο γραφήματα μοιάζουν μεταξύ τους και συγχέονται συνεχώς. Απαντούν σε διαφορετικές ερωτήσεις και χρησιμοποιούν διαφορετικά γεωμετρικά αντικείμενα.
| Κριτήρια | Ραβδόγραμμα | Ιστόγραμμα |
|---|---|---|
| Μεταβλητή άξονα Χ | Κατηγορηματικός ή παράγοντας | Συνεχής και αριθμητική |
| Τι αντιπροσωπεύει μια μπάρα | Μία κατηγορία | Ένα διάστημα, ή ένα κελί, τιμών |
| Κενά μεταξύ των ράβδων | Ναι, οι κατηγορίες είναι ξεχωριστές | Όχι, οι κάδοι είναι δίπλα |
| Παραγγελία μπαρ | Μπορεί να αναδιαταχθεί ελεύθερα | Καθορίζεται από την αριθμητική κλίμακα |
| Η ερώτηση απαντήθηκε | Πώς συγκρίνονται οι ομάδες; | Πώς κατανέμεται μια μεταβλητή; |
| αντικείμενο ggplot2 | geom_bar() | geom_histogram() |
Ο εμπειρικός κανόνας: αν η αναδιάταξη των ράβδων εξακολουθούσε να έχει νόημα, τότε έχουμε ένα ιστόγραμμα. Αν η αναδιάταξη τους θα κατέστρεφε το νόημα, τότε έχουμε ένα ιστόγραμμα. Για συνοπτικές περιλήψεις της ίδιας συνεχούς μεταβλητής που βασίζονται σε τεταρτημόρια, χρησιμοποιήστε ένα οικόπεδο κουτιού.
Πώς να δημιουργήσετε ένα γράφημα ράβδων σε R
Για να δημιουργήσετε γράφημα στο 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_histogram() για συνεχή δεδομένα.
Διάγραμμα ράβδων: μέτρηση
Το πρώτο σας γράφημα δείχνει τη συχνότητα του κυλίνδρου με geom_bar(). Ο παρακάτω κώδικας είναι η πιο βασική σύνταξη.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code εξήγηση
- Περνάτε το σύνολο δεδομένων mtcars στο ggplot.
- Μέσα στο όρισμα aes(), ορίζετε τον άξονα x στη μεταβλητή παράγοντα cyl
- Το σύμβολο + σημαίνει ότι θέλετε το R να συνεχίσει να διαβάζει τον κώδικα. Κάνει τον κώδικα πιο ευανάγνωστο σπάζοντας τον.
- Χρησιμοποιήστε το geom_bar() για το γεωμετρικό αντικείμενο.
Παραγωγή:
Σημείωση: βεβαιωθείτε ότι έχετε μετατρέψει τις μεταβλητές σε παράγοντα διαφορετικά το R αντιμετωπίζει τις μεταβλητές ως αριθμητικές. Δείτε το παρακάτω παράδειγμα.
Προσαρμόστε το γράφημα
Τέσσερα ορίσματα μπορούν να διαβιβαστούν για την προσαρμογή του γραφήματος:
- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, 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()
Code εξήγηση
- Τα χρώματα των γραμμών ελέγχονται από τον χάρτη aes()ping μέσα στο γεωμετρικό αντικείμενο (δηλαδή όχι στη συνάρτηση ggplot()). Μπορείτε να αλλάξετε το χρώμα με τα ορίσματα fill. Εδώ, επιλέγετε το χρώμα κοραλλιού.
Παραγωγή:
Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό:
grDevices::colors()
για να δείτε όλα τα χρώματα που είναι διαθέσιμα στο R. Υπάρχουν περίπου 650 χρώματα.
Αλλάξτε την ένταση
Μπορείτε να αυξήσετε ή να μειώσετε την ένταση του χρώματος των ράβδων
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code εξήγηση
- Για να αυξήσετε/μειώσετε την ένταση της γραμμής, μπορείτε να αλλάξετε την τιμή του άλφα. Ένα μεγάλο άλφα αυξάνει την ένταση και ένα χαμηλό άλφα τη μειώνει. Το άλφα κυμαίνεται από 0 έως 1. Στο 1 το χρώμα ταιριάζει ακριβώς με την παλέτα. Στο 0 η γραμμή είναι αόρατη. Εδώ επιλέγετε άλφα = 0.5.
Παραγωγή:
Χρώμα ανά ομάδες
Μπορείτε να αλλάξετε τα χρώματα των ράβδων, δηλαδή ένα διαφορετικό χρώμα για κάθε ομάδα. Για παράδειγμα, η μεταβλητή κυλίνδρου έχει τρία επίπεδα, τότε μπορείτε να σχεδιάσετε το γράφημα ράβδων με τρία χρώματα.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code εξήγηση
- Το όρισμα fill μέσα στην aes() αλλάζει το χρώμα της γραμμής. Αλλάζετε το χρώμα ορίζοντας fill = μεταβλητή x-axis. Στο παράδειγμά σας, η μεταβλητή x-axis είναι cyl; fill = factor(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()
Code εξήγηση
- Η κλήση ggplot() λαμβάνει τα δεδομένα του συνόλου δεδομένων και τον χάρτη aes()ping.
- Στο aes() συμπεριλαμβάνετε τη μεταβλητή x-axis και ποια μεταβλητή απαιτείται για να γεμίσει τη γραμμή (δηλ. am)
- geom_bar(): Δημιουργήστε το γράφημα ράβδων
Παραγωγή:
Ο χάρτηςping θα γεμίσει τη γραμμή με δύο χρώματα, ένα για κάθε επίπεδο. Είναι εύκολο να αλλάξετε την ομάδα επιλέγοντας άλλες μεταβλητές παράγοντα στο σύνολο δεδομένων.
Γράφημα ράβδων σε ποσοστό
Μπορείτε να οπτικοποιήσετε τη γραμμή σε ποσοστό αντί για την πρωτογενή καταμέτρηση.
# Γράφημα ράβδων σε ποσοστό
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code εξήγηση
- Χρησιμοποιήστε θέση = "πλήρωση" στο όρισμα geom_bar() για να δημιουργήσετε ένα γραφικό με ποσοστό στον άξονα y.
Παραγωγή:
Μπάρες δίπλα δίπλα
Είναι εύκολο να σχεδιάσετε το διάγραμμα ράβδων με τη μεταβλητή ομάδας δίπλα-δίπλα.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code εξήγηση
- 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")
Code εξήγηση
- Η aes() έχει τώρα δύο μεταβλητές. Η μεταβλητή cyl αναφέρεται στον άξονα x και η μέση_mpg είναι ο άξονας y.
- Περνάτε την εντολή stat = “identity” έτσι ώστε η συνάρτηση geom_bar() να χρησιμοποιεί τη μεταβλητή του άξονα y ως έχει αντί να μετρά γραμμές. Η προεπιλογή για την συνάρτηση geom_bar() είναι stat = “count”.
Παραγωγή:
Βήμα 3) Αλλάξτε τον προσανατολισμό
Αλλάζετε τον προσανατολισμό του γραφήματος από κάθετο σε οριζόντιο.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code εξήγηση
- Μπορείτε να ελέγξετε τον προσανατολισμό του γραφήματος με το coord_flip().
Παραγωγή:
Βήμα 4) Αλλάξτε το χρώμα
Μπορείτε να διαφοροποιήσετε τα χρώματα των ράβδων σύμφωνα με το επίπεδο παράγοντα της μεταβλητής του άξονα x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code εξήγηση
- Μπορείτε να σχεδιάσετε το γράφημα ανά ομάδες με τον χάρτη fill=cylpingΤο R φροντίζει αυτόματα για τα χρώματα με βάση τα επίπεδα της μεταβλητής cyl
Παραγωγή:
Βήμα 5) Αλλάξτε το μέγεθος
Για να κάνετε το γράφημα να φαίνεται πιο όμορφο, μειώνετε το πλάτος της γραμμής.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code εξήγηση
- Το όρισμα πλάτους μέσα στη συνάρτηση geom_bar() ελέγχει το πάχος της ράβδου. Μια μεγαλύτερη τιμή την κάνει πιο φαρδιά.
- Το διάγραμμα αποθηκεύεται στο γράφημα αντικειμένων, επειδή το επόμενο βήμα το επαναχρησιμοποιεί αμετάβλητο. Η αποθήκευση ενδιάμεσων διαγραμμάτων διατηρεί τον κώδικα αναγνώσιμο.
Παραγωγή:
Βήμα 6) Προσθέστε ετικέτες στο γράφημα
Το τελευταίο βήμα προσθέτει την τιμή του mean_mpg ως ετικέτα μέσα σε κάθε γραμμή.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code εξήγηση
- Η συνάρτηση geom_text() είναι χρήσιμη για τον έλεγχο της αισθητικής του κειμένου.
- label=: Προσθέστε μια ετικέτα μέσα στις γραμμές
- mean_mpg: Χρησιμοποιήστε τη μεταβλητή mean_mpg για την ετικέτα
- Η συνάρτηση hjust ελέγχει τη θέση της ετικέτας κατά μήκος της γραμμής. Τιμές κοντά στο 1 την τοποθετούν κοντά στο τέλος της γραμμής, ενώ μεγαλύτερες τιμές την ωθούν προς τα πίσω προς τον άξονα. Εάν ο προσανατολισμός του γραφήματος είναι κατακόρυφος, αλλάξτε την συνάρτηση hjust σε vjust.
- color=”white”: Αλλάξτε το χρώμα του κειμένου. Εδώ χρησιμοποιείτε το λευκό χρώμα.
- size=3: Ορίστε το μέγεθος του κειμένου.
Παραγωγή:
Πώς να ταξινομήσετε και να ονομάσετε γραμμές σε ένα διάγραμμα ράβδων σε R
Δύο τελευταίες πινελιές διαχωρίζουν ένα προσχέδιο γραφήματος από ένα δημοσιεύσιμο: η ταξινόμηση των ράβδων κατά τιμή και η σωστή επισήμανση των αξόνων.
Αναδιάταξη ράβδων. Το ggplot2 ταξινομεί τα επίπεδα παραγόντων αλφαβητικά από προεπιλογή, η οποία σπάνια είναι η πιο κατατοπιστική σειρά. Τυλίξτε τη μεταβλητή x στην reorder() για να ταξινομήσετε με βάση μια δεύτερη μεταβλητή:
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
Προθέστε στη μεταβλητή ταξινόμησης ένα σύμβολο μείον, reorder(cyl, -mean_mpg), για να αντιστρέψετε την κατεύθυνση.
Προσθήκη τίτλων και ετικετών αξόνων. Η συνάρτηση labs() ορίζει κάθε στοιχείο κειμένου σε μία μόνο κλήση:
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
Ορίστε την τιμή fill = NULL μέσα στο labs() για να αφαιρέσετε εντελώς τον τίτλο του υπομνήματος και χρησιμοποιήστε την τιμή theme(legend.position = “none”) για να αφαιρέσετε τον υπόμνημα όταν ο άξονας x ήδη ονομάζει τις ομάδες.
Επιλέγοντας τα δικά σας χρώματα. Αντικαταστήστε την προεπιλεγμένη παλέτα με μια σαφή, ώστε το διάγραμμα να ταιριάζει με το στυλ του σπιτιού σας:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Πώς να δημιουργήσετε ένα ιστόγραμμα σε R με geom_histogram()
Ένα ιστόγραμμα δείχνει πώς κατανέμεται μια μεμονωμένη συνεχής μεταβλητή. Αντί να μετράει κατηγορίες, η συνάρτηση ggplot2 χωρίζει το αριθμητικό εύρος σε ομάδες και μετράει πόσες παρατηρήσεις εμπίπτουν σε κάθε μία.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
Η R εμφανίζει ένα μήνυμα που σας προτείνει να επιλέξετε καλύτερο αριθμό κάδων, επειδή η προεπιλογή των 30 κάδων είναι αυθαίρετη. Δύο ορίσματα ελέγχουν αυτό:
- κάδους: ο αριθμός των διαστημάτων στα οποία θα χωριστεί το εύρος.
- πλάτος δυαδικού πλαισίου: το πλάτος κάθε διαστήματος, εκφρασμένο στις μονάδες της μεταβλητής. Χρησιμοποιήστε αυτό όταν οι μονάδες έχουν νόημα.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
Η ομαδοποίηση είναι η πιο σημαντική επιλογή σε ένα ιστόγραμμα. Πολύ λίγα ομαδοποιημένα ...
Σύγκριση ομάδων. Αντιστοιχίστε έναν παράγοντα που θα συμπληρωθεί και ορίστε τη θέση έτσι ώστε οι κατανομές να παραμένουν ευανάγνωστες:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Με τη λέξη position = "identity" και μειωμένο άλφα, τα ιστογράμματα επικαλύπτονται, ώστε να μπορείτε να συγκρίνετε σχήματα απευθείας. Χρησιμοποιήστε τη λέξη position = "dodge" εάν προτιμάτε να βλέπετε τους κάδους δίπλα-δίπλα.
Πυκνότητα αντί για μετρήσεις. Όταν οι ομάδες διαφέρουν σε μέγεθος, σχεδιάστε την πυκνότητα έτσι ώστε οι περιοχές να είναι συγκρίσιμες και επικαλύψτε μια εξομαλυνμένη καμπύλη:
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
Ραβδόγραμμα και Ιστόγραμμα σε R: Code Αναφορά
Ένα ραβδόγραμμα ταιριάζει σε έναν κατηγορικό άξονα x, όπου ο άξονας y είναι είτε μια καταμέτρηση είτε ένα συνοπτικό στατιστικό στοιχείο. Ο παρακάτω πίνακας παραθέτει την κλήση ggplot2 για κάθε παραλλαγή που καλύπτεται παραπάνω:
| Σκοπός | Code |
|---|---|
| Κόμης |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Μετρήστε με διαφορετικό χρώμα γεμίσματος |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Μετρήστε με ομάδες, στοιβαγμένες |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Μετρήστε με ομάδες, δίπλα δίπλα |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Καταμέτρηση με ομάδες, στοιβαγμένες σε % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Τιμές (συνοπτική στατιστική) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Ιστόγραμμα μιας συνεχούς μεταβλητής |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













