Προγραμματισμός

Προσθέστε χρώμα στο κείμενο ggplot2 στο R

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

Αν θέλετε να ακολουθήσετε, προτείνω να εγκαταστήσετε την έκδοση ανάπτυξης του ggplot2 από το GitHub. Γενικά, ορισμένα πράγματα που παρουσιάστηκαν στο συνέδριο δεν ήταν ακόμη στο CRAN. Και το ggtext σίγουρα δεν λειτουργεί με κάποιες παλαιότερες εκδόσεις του ggplot.

Εσείς έχω για να εγκαταστήσετε το ggtext από το GitHub, καθώς την εποχή που το έγραψα, το πακέτο δεν ήταν ακόμη στο CRAN. χρησιμοποιώ τηλεχειριστήρια :: install_github () για να εγκαταστήσετε πακέτα R από το GitHub, αν και πολλές άλλες επιλογές, όπως devtools :: install_github (), δουλέψτε επίσης. Σημειώστε ότι στον παρακάτω κώδικα συμπεριλαμβάνω το όρισμα build_vignettes = TRUE οπότε έχω τοπικές εκδόσεις πακέτων σύντομων χρονογραφημάτων. Μετά από αυτό, φορτώνω ggplot2, ggtext και dplyr.

τηλεχειριστήρια :: install_github ("tidyverse / ggplot2", build_vignettes = TRUE)

τηλεχειριστήρια :: install_github ("wilkelab / ggtext", build_vignettes = TRUE)

βιβλιοθήκη (ggplot2)

βιβλιοθήκη (ggtext)

βιβλιοθήκη (dplyr)

Για δεδομένα επίδειξης, θα χρησιμοποιήσω δεδομένα που συγκρίνουν tweets για το R (με το hashtag #rstats) με tweets για το Python (#python). Μετά τη λήψη πρόσφατων tweets, έκανα κάποιο φιλτράρισμα, πήρα ένα τυχαίο δείγμα 1.000 από το καθένα και έπειτα υπολόγισα πόσα σε κάθε ομάδα είχαν τουλάχιστον πέντε επισημάνσεις "μου αρέσει", είχαν τουλάχιστον πέντε retweets, συμπεριέλαβαν μια διεύθυνση URL και περιελάμβαναν μέσα όπως μια φωτογραφία ή βίντεο.

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

Hashtag <- c ("# python", "#python", "#python", "#python", "#rstats", "#rstats", "#rstats", "#rstats")

Κατηγορία <- c ("FiveLikes", "FiveRTs", "HasURL", "HasMedia", "FiveLikes", "FiveRTs", "HasURL", "HasMedia")

NumTweets <- c (179, 74, 604, 288, 428, 173, 592, 293)

graph_data <- data.frame (Hashtag, Κατηγορία, NumTweets, stringAsFactors = FALSE)

ο γραφικά_δεδομένα το πλαίσιο δεδομένων είναι σε "μεγάλη" μορφή: μία στήλη για το hashtag (#rstats ή #python), μία για την κατηγορία που μετράω και μία στήλη για τις τιμές.

str (graph_data) 'data.frame': 8 obs. από 3 μεταβλητές: $ Hashtag: chr "#python" "#python" "#python" "#python" ... $ Κατηγορία: chr "FiveLikes" "FiveRTs" "HasURL" "HasMedia" ... $ NumTweets: num 179 74 604 288 428 173 592 293

Αυτή είναι συνήθως η δομή που θέλετε για τα περισσότερα γραφήματα ggplot.

Στη συνέχεια θα δημιουργήσω ένα ομαδοποιημένο γράφημα ράβδων και θα το αποθηκεύσω στη μεταβλητή my_chart.

my_chart <- ggplot (graph_data, aes (x = Category, y = NumTweets, fill = Hashtag)) +

geom_col (θέση = "dodge", άλφα = 0,9) +

theme_minimal () +

xlab ("") +

ylab ("") +

θέμα (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (χρώμα = "γκρι")) +

scale_fill_manual (τιμές = c ("# ff8c00", "# 346299"))

ο άλφα = 0,9 στη γραμμή δύο καθιστά τις ράβδους λίγο διαφανείς (άλφα = 1.0 είναι πλήρως αδιαφανές). Οι τελευταίες γραμμές προσαρμόζουν την εμφάνιση του γραφήματος: χρησιμοποιώντας το ελάχιστο θέμα, απαλλαγή από τις ετικέτες άξονα x και y, αφαίρεση προεπιλεγμένων γραμμών πλέγματος και ρύθμιση χρωμάτων για τις ράβδους. Το γράφημα θα πρέπει να μοιάζει με αυτό εάν εκτελέσετε τον κώδικα και μετά εμφανιστεί my_chart:

Sharon Machlis,

Στη συνέχεια θα προσθέσω έναν τίτλο με αυτόν τον κωδικό:

my_chart +

labs (τίτλος = "#python και #rstats: Σύγκριση 1.000 τυχαίων tweets")

Sharon Machlis,

Φαίνεται . . . ΕΝΤΑΞΕΙ. Αλλά σε μια ξεχωριστή συνεδρία του Συνεδρίου RStudio, The Glamour of Graphics, ο Will Chase μας είπε ότι οι θρύλοι είναι λιγότερο από ιδανικοί (αν και έκανε αυτό το σημείο σε λίγο πιο πολύχρωμη γλώσσα). Έδειξε ότι η προσθήκη χρωμάτων στην επικεφαλίδα του γραφήματος μπορεί να βελτιώσει τα γραφικά σας. Μπορούμε να το κάνουμε αρκετά εύκολα με το πακέτο ggtext.

Γνωρίζοντας λίγο στυλ HTML με ενσωματωμένο CSS σίγουρα θα σας βοηθήσει να προσαρμόσετε το κείμενό σας. Στον παρακάτω κώδικα, χρησιμοποιώ span tags για να διαχωρίσω τα τμήματα του κειμένου που θέλω να επηρεάσω - #python και #rstats. Μέσα σε κάθε σύνολο ετικετών έκτασης ορίζω ένα στυλ - ειδικά το χρώμα κειμένου με χρώμα: και μετά η δεκαεξαδική τιμή του χρώματος που θέλω. Μπορείτε επίσης να χρησιμοποιήσετε το διαθέσιμο χρώμα ονόματα Επιπρόσθετα δεκαεξαδικές τιμές.

my_chart +

εργαστήρια (

title = "#python και

#rstats: Σύγκριση 1.000 τυχαίων tweets "

) +

θέμα(

plot.title = element_markdown ()

)

Σημειώστε ότι υπάρχουν δύο μέρη για το στυλ κειμένου με το ggtext. Εκτός από την προσθήκη του στυλ μου στην επικεφαλίδα ή σε άλλο κείμενο, πρέπει να προσθέσω element_markdown () σε όποιο στοιχείο του σχεδίου έχει τα χρώματα. Το έκανα στον παραπάνω κώδικα μέσα σε ένα θέμα() λειτουργία με plot.title = element_markdown ().

Εάν εκτελέσετε όλο τον κώδικα μέχρι τώρα, το γράφημα θα έχει την εξής μορφή:

Sharon Machlis,

Ωστόσο, δυσκολεύομαι να δω τα χρώματα σε αυτό το κείμενο της επικεφαλίδας. Ας προσθέσουμε ετικέτες για να κάνετε το κείμενο έντονο και ας προσθέσουμε επίσης leg.position = κανένα για να αφαιρέσετε το μύθο:

my_chart +

εργαστήρια (

τίτλος = "#Πύθων και

#στατικά: Σύγκριση 1.000 τυχαίων tweets "

) +

θέμα(

plot.title = element_markdown (), leg.position = "κανένας"

)

Sharon Machlis,

Αν θέλω να αλλάξω το χρώμα του κειμένου του άξονα x, πρέπει να προσθέσω δεδομένα με αυτές τις πληροφορίες στο πλαίσιο δεδομένων που απεικονίζω. Στο επόμενο μπλοκ κώδικα, δημιουργώ μια στήλη που προσθέτει έντονα πλάγια κόκκινα στις ετικέτες κατηγορίας FiveLikes και FiveRTs και ορίζει τα υπόλοιπα ως έντονα πλάγια γράμματα χωρίς να προσθέτω κόκκινο. Επίσης, αύξησα το μέγεθος της γραμματοσειράς μόνο για FiveLikes και FiveRTs. (Δεν θα το έκανα αυτό σε πραγματικό γράφημα. Το κάνω εδώ μόνο για να διευκολύνω να βλέπω τις διαφορές μεταξύ των δύο.)

γράφημα_δεδομένων%

αλλάσσω(

category_with_color = ifelse (Κατηγορία% σε% c ("FiveLikes", "FiveRTs"),

κόλλα :: κόλλα ("{Κατηγορία}"),

κόλλα :: κόλλα ("{Κατηγορία}"))

)

Στη συνέχεια, πρέπει να δημιουργήσω ξανά το γράφημα για να χρησιμοποιήσω το ενημερωμένο πλαίσιο δεδομένων. Ο νέος κωδικός γραφήματος είναι ως επί το πλείστον ο ίδιος όπως πριν, αλλά με δύο αλλαγές: Ο άξονας x είναι τώρα ο νέος κατηγορία_ με_χρώμα στήλη. Και, πρόσθεσα element_markdown () προς την axis.text.x μεσα στην θέμα() λειτουργία:

ggplot (graph_data, aes (x = category_with_color, y = NumTweets, fill = Hashtag)) +

geom_col (θέση = "dodge", άλφα = 0,9) +

theme_minimal () +

xlab ("") +

ylab ("") +

θέμα (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.line = element_line (χρώμα = "γκρι")) +

scale_fill_manual (τιμές = c ("# ff8c00", "# 346299")) +

εργαστήρια (

τίτλος = "#Πύθων και #στατικά: Σύγκριση 1.000 τυχαίων tweets "

) +

θέμα(

plot.title = element_markdown (), leg.position = "κανένας",

axis.text.x = element_markdown () # Προστέθηκε element_markdown () στο axis.text.x στο θέμα

)

Το γράφημα μοιάζει τώρα με αυτό, με τα δύο πρώτα στοιχεία στον άξονα x με κόκκινο χρώμα:

Sharon Machlis,

Υπάρχουν περισσότερα που μπορείτε να κάνετε με το ggtext, όπως η δημιουργία στυλιζαρισμένων πλαισίων κειμένου και η προσθήκη εικόνων σε άξονες. Αλλά ο συγγραφέας πακέτων Claus Wilke μας προειδοποίησε στο συνέδριο να μην τρελαθούμε. Το πακέτο ggtext δεν υποστηρίζει όλες τις εντολές μορφοποίησης που είναι διαθέσιμες για έγγραφα R Markdown. Μπορείτε να δείτε το πιο πρόσφατο στον ιστότοπο ggtext.

Για περισσότερες συμβουλές R, μεταβείτε στη σελίδα Do More With R στη διεύθυνση //bit.ly/domorewithR ή στη λίστα αναπαραγωγής Do More With R στο κανάλι TECHtalk YouTube.

$config[zx-auto] not found$config[zx-overlay] not found