The Good, the Bad and the Ugly: how (not) to visualize data
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Below you’ll find the complete code used to create the ggplot2 graphs in my talk The Good, the Bad and the Ugly: how (not) to visualize data at this year’s data2day conference. You can find the German slides here:
You can also find a German blog article accompanying my talk on codecentric’s blog.
If you have questions or would like to talk about this article (or something else data-related), you can now book 15-minute timeslots with me (it’s free – one slot available per weekday):
If you have been enjoying my content and would like to help me be able to create more, please consider sending me a donation at . Thank you! 🙂
library(tidyverse) library(ggExtra) library(ragg) library(ggalluvial) library(treemapify) library(ggalt) library(palmerpenguins)
Dataset
head(penguins) ## # A tibble: 6 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_… body_mass_g sex ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> ## 1 Adelie Torge… 39.1 18.7 181 3750 male ## 2 Adelie Torge… 39.5 17.4 186 3800 fema… ## 3 Adelie Torge… 40.3 18 195 3250 fema… ## 4 Adelie Torge… NA NA NA NA <NA> ## 5 Adelie Torge… 36.7 19.3 193 3450 fema… ## 6 Adelie Torge… 39.3 20.6 190 3650 male ## # … with 1 more variable: year <int> #head(penguins_raw)
Colors
# The palette with grey: cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7") # The palette with black: cbp2 <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7") library(plotrix) sliceValues <- rep(10, 8) # each slice value=10 for proportionate slices ( p <- pie3D(sliceValues, explode=0, theta = 1.2, col = cbp1, labels = cbp1, labelcex = 0.9, shade = 0.6, main = "Colorblind\nfriendly palette") )
## [1] 0.3926991 1.1780972 1.9634954 2.7488936 3.5342917 4.3196899 5.1050881 ## [8] 5.8904862 ggplot <- function(...) ggplot2::ggplot(...) + scale_color_manual(values = cbp1) + scale_fill_manual(values = cbp1) + # note: needs to be overridden when using continuous color scales theme_bw()
Main diagram types
https://rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf
Pointcharts
penguins %>% remove_missing() %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm)) + geom_jitter(alpha = 0.5) + facet_wrap(vars(species), ncol = 3) + scale_x_reverse() + scale_y_reverse() + labs(x = "Bill length (mm)", y = "Flipper length (mm)", size = "body mass (g)", title = "Scatterplot", subtitle = "Penguins bill v. flipper length by species", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
penguins %>% remove_missing() %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm, color = species, shape = species)) + geom_point(alpha = 0.7) + labs(x = "Bill length (mm)", y = "Flipper length (mm)", title = "Scatterplot", subtitle = "Penguins bill v. flipper length by species", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
- Jitter with smoothing line
penguins %>% remove_missing() %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm, color = species, shape = species)) + geom_jitter(alpha = 0.5) + geom_smooth(method = "loess", se = TRUE) + facet_wrap(vars(species), nrow = 3) + labs(x = "Bill length (mm)", y = "Flipper length (mm)", title = "Scatterplot with smoothing line", subtitle = "Penguins bill v. flipper length by species with loess smoothing line", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
penguins %>% remove_missing() %>% filter(species == "Adelie") %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm)) + geom_point(alpha = 0.5) + geom_smooth(method = "loess", se = TRUE) + labs(x = "Bill length (mm)", y = "Flipper length (mm)", title = "Scatterplot with smoothing line", subtitle = "Penguins bill v. flipper length by species with\nloess smoothing line, histogram & density distribution", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
#(ggMarginal(p, type = "densigram", fill = "transparent"))
Bubblecharts
penguins %>% remove_missing() %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm, color = species, shape = species, size = body_mass_g)) + geom_point(alpha = 0.5) + labs(x = "Bill length (mm)", y = "Flipper length (mm)", title = "Bubble plot", size = "body mass (g)", subtitle = "Penguins bill v. flipper length by species;\nsize indicates body mass in grams", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Linecharts
penguins %>% remove_missing() %>% filter(species == "Adelie") %>% ggplot(aes(x = bill_length_mm, y = flipper_length_mm, color = sex)) + geom_line() + geom_point() + labs(x = "Bill length (mm)", y = "Flipper length (mm)", title = "Line plot", subtitle = "Penguins bill v. flipper length by species and sex", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Correlation plots / heatmaps
mat <- penguins %>% remove_missing() %>% select(bill_depth_mm, bill_length_mm, body_mass_g, flipper_length_mm) cormat <- round(cor(mat), 2) cormat[upper.tri(cormat)] <- NA cormat <- cormat %>% as_data_frame() %>% mutate(x = colnames(mat)) %>% gather(key = "y", value = "value", bill_depth_mm:flipper_length_mm) cormat %>% remove_missing() %>% arrange(x, y) %>% ggplot(aes(x = x, y = y, fill = value)) + geom_tile() + scale_fill_gradient2(low = "blue", high = "red", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name = "Pearson\nCorrelation") + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) + coord_fixed() + labs(x = "", y = "", title = "Correlation heatmap", subtitle = "Correlation btw. penguins' traits", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Barcharts
- per default: counts
penguins %>% remove_missing() %>% ggplot(aes(x = species, fill = sex)) + geom_bar() + labs(x = "Species", y = "Counts", title = "Barchart", subtitle = "Counts of male & female penguins per species in study", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
penguins %>% remove_missing() %>% ggplot(aes(x = species, fill = sex)) + geom_bar(position = 'dodge') + labs(x = "Species", y = "Counts", title = "Barchart", subtitle = "Counts of male & female penguins per species in study", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
- alternative: set y-values
penguins %>% remove_missing() %>% group_by(species, sex) %>% summarise(mean_bmg = mean(body_mass_g), sd_bmg = sd(body_mass_g)) %>% ggplot(aes(x = species, y = mean_bmg, fill = sex)) + geom_bar(stat = "identity", position = "dodge") + geom_errorbar(aes(ymin = mean_bmg - sd_bmg, ymax = mean_bmg + sd_bmg), width = 0.2, position = position_dodge(0.9)) + labs(x = "Species", y = "Mean body mass (in g)", title = "Barchart", subtitle = "Mean body mass of male & female penguins per species\nwith standard deviation", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Boxplots
penguins %>% remove_missing() %>% ggplot(aes(x = species, y = body_mass_g, fill = sex)) + geom_boxplot() + labs(x = "Species", y = "Body mass (in g)", title = "Boxplot", subtitle = "Body mass of three penguin species per sex", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
- with points
penguins %>% remove_missing() %>% ggplot(aes(x = species, y = body_mass_g, fill = sex, color = sex)) + geom_boxplot(alpha = 0.5, notch = TRUE) + geom_jitter(alpha = 0.5, position=position_jitter(0.3)) + labs(x = "Species", y = "Body mass (in g)", title = "Boxplot with points (dotplot)", subtitle = "Body mass of three penguin species per sex", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Violinplots
penguins %>% remove_missing() %>% ggplot(aes(x = species, y = body_mass_g, fill = sex)) + geom_violin(scale = "area") + labs(x = "Species", y = "Body mass (in g)", title = "Violinplot", subtitle = "Body mass of three penguin species per sex", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
- with dots (sina-plots)
penguins %>% remove_missing() %>% ggplot(aes(x = species, y = body_mass_g, fill = sex, color = sex)) + geom_dotplot(method = "dotdensity", alpha = 0.7, binaxis = 'y', stackdir = 'center', position = position_dodge(1)) + labs(x = "Species", y = "Body mass (in g)", title = "Violinplot with points (dotplot)", subtitle = "Body mass of three penguin species per sex", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Piecharts
penguins %>% remove_missing() %>% group_by(species, sex) %>% summarise(n = n()) %>% mutate(freq = n / sum(n), percentage = freq * 100) %>% ggplot(aes(x = "", y = percentage, fill = sex)) + facet_wrap(vars(species), nrow = 1) + geom_bar(stat = "identity", alpha = 0.8) + coord_polar("y", start = 0) + labs(x = "", y = "Percentage", title = "Piechart", subtitle = "Percentage of male v. female penguins per species in study", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Alluvial charts
as.data.frame(UCBAdmissions) %>% ggplot(aes(y = Freq, axis1 = Gender, axis2 = Dept)) + geom_alluvium(aes(fill = Admit), width = 1/12) + geom_stratum(width = 1/12, fill = "black", color = "grey") + geom_label(stat = "stratum", aes(label = after_stat(stratum))) + scale_x_discrete(limits = c("Gender", "Dept"), expand = c(.05, .05)) + labs(x = "", y = "Frequency", title = "Alluvial chart", subtitle = "UC Berkeley admissions and rejections, by sex and department", caption = "Source: Bickel et al. (1975)\nSex bias in graduate admissions: Data from Berkeley. Science, 187, 398–403.")
Treemaps
as.data.frame(UCBAdmissions) %>% group_by(Admit, Gender) %>% summarise(sum_freq = sum(Freq)) %>% ggplot(aes(area = sum_freq, fill = sum_freq, label = Gender, subgroup = Admit)) + geom_treemap() + geom_treemap_subgroup_border() + geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5, colour = "black", fontface = "italic", min.size = 0) + geom_treemap_text(colour = "white", place = "centre", reflow = T) + scale_fill_gradient2(low = "#999999", high = "#E69F00", mid = "white", midpoint = 1000, space = "Lab", name = "Sum of\nfrequencies") + labs(x = "", y = "", title = "Treemap", subtitle = "UC Berkeley admissions and rejections by sex", caption = "Source: Bickel et al. (1975)\nSex bias in graduate admissions: Data from Berkeley. Science, 187, 398–403.")
Dumbbell plots
penguins %>% remove_missing() %>% group_by(year, species, sex) %>% summarise(mean_bmg = mean(body_mass_g)) %>% mutate(species_sex = paste(species, sex, sep = "_"), year = paste0("year_", year)) %>% spread(year, mean_bmg) %>% ggplot(aes(x = year_2007, xend = year_2009, y = reorder(species_sex, year_2009))) + geom_dumbbell(color = "#999999", size_x = 3, size_xend = 3, #Note: there is no US:'color' for UK:'colour' # in geom_dumbbel unlike standard geoms in ggplot() colour_x = "#999999", colour_xend = "#E69F00") + labs(x = "Body mass (g)", y = "Species & sex", title = "Dumbbell plot", subtitle = "Penguin's change in body mass from 2007 to 2009", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Slope charts
penguins %>% remove_missing() %>% group_by(year, species, sex) %>% summarise(mean_bmg = mean(body_mass_g)) %>% ggplot(aes(x = year, y = mean_bmg, group = sex, color = sex)) + facet_wrap(vars(species), nrow = 3) + geom_line(alpha = 0.6, size = 2) + geom_point(alpha = 1, size = 3) + scale_x_continuous(breaks=c(2007, 2008, 2009)) + labs(x = "Year", y = "Body mass (g)", color = "Sex", title = "Slope chart", subtitle = "Penguin's change in body mass from 2007 to 2009", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Stacked area charts
penguins %>% remove_missing() %>% group_by(year, species, sex) %>% summarise(mean_bmg = mean(body_mass_g)) %>% ggplot(aes(x = year, y = mean_bmg, fill = sex)) + facet_wrap(vars(species), nrow = 3) + geom_area(alpha = 0.6, size=.5, color = "white") + scale_x_continuous(breaks=c(2007, 2008, 2009)) + labs(x = "Year", y = "Mean body mass (g)", color = "Sex", title = "Stacked area chart", subtitle = "Penguin's change in body mass from 2007 to 2009", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Lolliplot chart
penguins %>% remove_missing() %>% group_by(year, species, sex) %>% summarise(mean_bmg = mean(body_mass_g)) %>% mutate(species_sex = paste(species, sex, sep = "_"), year = paste0("year_", year)) %>% spread(year, mean_bmg) %>% ggplot() + geom_segment(aes(x = reorder(species_sex, -year_2009), xend = reorder(species_sex, -year_2009), y = 0, yend = year_2009), color = "#999999", size = 1) + geom_point(aes(x = reorder(species_sex, -year_2009), y = year_2009), size = 4, color = "#E69F00") + coord_flip() + labs(x = "Species & sex", y = "Body mass (g)", title = "Lollipop chart", subtitle = "Penguin's body mass in 2009", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Dendrograms
library(ggdendro) library(dendextend) penguins_hist <- penguins %>% filter(sex == "male") %>% select(species, bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g) %>% group_by(species) %>% sample_n(10) %>% as.data.frame() rownames(penguins_hist) <- paste(penguins_hist$species, seq_len(nrow(penguins_hist)), sep = "_") penguins_hist <- penguins_hist %>% select(-species) %>% remove_missing() #hc <- hclust(dist(penguins_hist, method = "euclidean"), method = "ward.D2") #ggdendrogram(hc) # Create a dendrogram and plot it penguins_hist %>% scale %>% dist(method = "euclidean") %>% hclust(method = "ward.D2") %>% as.dendrogram ## 'dendrogram' with 2 branches and 30 members total, at height 11.94105
Waterfall charts
library(waterfall) jaquith %>% arrange(score) %>% add_row(factor = "Total", score = sum(jaquith$score)) %>% mutate(factor = factor(factor, levels = factor), id = seq_along(score)) %>% mutate(end = cumsum(score), start = c(0, end[-length(end)]), start = c(start[-length(start)], 0), end = c(end[-length(end)], score[length(score)]), gr_col = ifelse(factor == "Total", "Total", "Part")) %>% ggplot(aes(x = factor, fill = gr_col)) + geom_rect(aes(x = factor, xmin = id - 0.45, xmax = id + 0.45, ymin = end, ymax = start)) + theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust = 1), legend.position = "none") + labs(x = "", y = "Amount", title = "Waterfall chart", subtitle = "Sample business-adjusted risk from Security Metrics", caption = "Andrew Jaquith, Security Metrics: Replacing Fear, Uncertainty, and Doubt\n(Boston: Addison-Wesley Professional, 2007), 170-171.")
Biplots
library(ggfortify) penguins_prep <- penguins %>% remove_missing() %>% select(bill_length_mm:body_mass_g) penguins_pca <- penguins_prep %>% prcomp(scale. = TRUE) penguins_km <- penguins_prep %>% kmeans(3) autoplot(penguins_pca, data = penguins %>% remove_missing(), colour = 'species', shape = 'species', loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, loadings.label.size = 3) + scale_color_manual(values = cbp1) + scale_fill_manual(values = cbp1) + theme_bw() + labs( title = "Biplot PCA", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
autoplot(penguins_km, data = penguins %>% remove_missing(), colour = 'species', shape = 'species', frame = TRUE, frame.type = 'norm') + scale_color_manual(values = cbp1) + scale_fill_manual(values = cbp1) + theme_bw() + labs( title = "Biplot k-Means clustering", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
Radar charts, aka star chart, aka spider plot
https://www.data-to-viz.com/caveat/spider.html
library(ggiraphExtra) penguins %>% remove_missing() %>% select(-island, -year) %>% ggRadar(aes(x = c(bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g), group = species, colour = sex, facet = sex), rescale = TRUE, size = 1, interactive = FALSE, use.label = TRUE) + scale_color_manual(values = cbp1) + scale_fill_manual(values = cbp1) + theme_bw() + scale_y_discrete(breaks = NULL) + # don't show ticks labs( title = "Radar/spider/star chart", subtitle = "Body mass of male & female penguins per species", caption = "Source: https://github.com/allisonhorst/palmerpenguins")
devtools::session_info() ## ─ Session info ─────────────────────────────────────────────────────────────── ## setting value ## version R version 4.0.2 (2020-06-22) ## os macOS Catalina 10.15.7 ## system x86_64, darwin17.0 ## ui X11 ## language (EN) ## collate en_US.UTF-8 ## ctype en_US.UTF-8 ## tz Europe/Berlin ## date 2020-10-20 ## ## ─ Packages ─────────────────────────────────────────────────────────────────── ## package * version date lib source ## ash 1.0-15 2015-09-01 [1] CRAN (R 4.0.2) ## assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0) ## backports 1.1.10 2020-09-15 [1] CRAN (R 4.0.2) ## blob 1.2.1 2020-01-20 [1] CRAN (R 4.0.2) ## blogdown 0.20.1 2020-09-09 [1] Github (rstudio/blogdown@d96fe78) ## bookdown 0.20 2020-06-23 [1] CRAN (R 4.0.2) ## broom 0.7.0 2020-07-09 [1] CRAN (R 4.0.2) ## callr 3.4.4 2020-09-07 [1] CRAN (R 4.0.2) ## cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.0.0) ## cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.0) ## colorspace 1.4-1 2019-03-18 [1] CRAN (R 4.0.0) ## crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0) ## DBI 1.1.0 2019-12-15 [1] CRAN (R 4.0.0) ## dbplyr 1.4.4 2020-05-27 [1] CRAN (R 4.0.2) ## dendextend * 1.14.0 2020-08-26 [1] CRAN (R 4.0.2) ## desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.0) ## devtools 2.3.2 2020-09-18 [1] CRAN (R 4.0.2) ## digest 0.6.25 2020-02-23 [1] CRAN (R 4.0.0) ## dplyr * 1.0.2 2020-08-18 [1] CRAN (R 4.0.2) ## ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.0) ## evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.1) ## extrafont 0.17 2014-12-08 [1] CRAN (R 4.0.2) ## extrafontdb 1.0 2012-06-11 [1] CRAN (R 4.0.2) ## fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0) ## farver 2.0.3 2020-01-16 [1] CRAN (R 4.0.0) ## fastmap 1.0.1 2019-10-08 [1] CRAN (R 4.0.0) ## forcats * 0.5.0 2020-03-01 [1] CRAN (R 4.0.0) ## fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2) ## gdtools 0.2.2 2020-04-03 [1] CRAN (R 4.0.2) ## generics 0.0.2 2018-11-29 [1] CRAN (R 4.0.0) ## ggalluvial * 0.12.2 2020-08-30 [1] CRAN (R 4.0.2) ## ggalt * 0.4.0 2017-02-15 [1] CRAN (R 4.0.2) ## ggdendro * 0.1.22 2020-09-13 [1] CRAN (R 4.0.2) ## ggExtra * 0.9 2019-08-27 [1] CRAN (R 4.0.2) ## ggfittext 0.9.0 2020-06-14 [1] CRAN (R 4.0.2) ## ggfortify * 0.4.10 2020-04-26 [1] CRAN (R 4.0.2) ## ggiraph 0.7.8 2020-07-01 [1] CRAN (R 4.0.2) ## ggiraphExtra * 0.2.9 2018-07-22 [1] CRAN (R 4.0.2) ## ggplot2 * 3.3.2 2020-06-19 [1] CRAN (R 4.0.2) ## glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2) ## gridExtra 2.3 2017-09-09 [1] CRAN (R 4.0.2) ## gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.0) ## haven 2.3.1 2020-06-01 [1] CRAN (R 4.0.2) ## hms 0.5.3 2020-01-08 [1] CRAN (R 4.0.0) ## htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.2) ## htmlwidgets 1.5.1 2019-10-08 [1] CRAN (R 4.0.0) ## httpuv 1.5.4 2020-06-06 [1] CRAN (R 4.0.2) ## httr 1.4.2 2020-07-20 [1] CRAN (R 4.0.2) ## insight 0.9.6 2020-09-20 [1] CRAN (R 4.0.2) ## jsonlite 1.7.1 2020-09-07 [1] CRAN (R 4.0.2) ## KernSmooth 2.23-17 2020-04-26 [1] CRAN (R 4.0.2) ## knitr 1.30 2020-09-22 [1] CRAN (R 4.0.2) ## labeling 0.3 2014-08-23 [1] CRAN (R 4.0.0) ## later 1.1.0.1 2020-06-05 [1] CRAN (R 4.0.2) ## lattice * 0.20-41 2020-04-02 [1] CRAN (R 4.0.2) ## lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.0) ## lubridate 1.7.9 2020-06-08 [1] CRAN (R 4.0.2) ## magrittr 1.5 2014-11-22 [1] CRAN (R 4.0.0) ## maps 3.3.0 2018-04-03 [1] CRAN (R 4.0.2) ## MASS 7.3-53 2020-09-09 [1] CRAN (R 4.0.2) ## Matrix 1.2-18 2019-11-27 [1] CRAN (R 4.0.2) ## memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.0) ## mgcv 1.8-33 2020-08-27 [1] CRAN (R 4.0.2) ## mime 0.9 2020-02-04 [1] CRAN (R 4.0.0) ## miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.0.0) ## modelr 0.1.8 2020-05-19 [1] CRAN (R 4.0.2) ## munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.0) ## mycor 0.1.1 2018-04-10 [1] CRAN (R 4.0.2) ## nlme 3.1-149 2020-08-23 [1] CRAN (R 4.0.2) ## palmerpenguins * 0.1.0 2020-07-23 [1] CRAN (R 4.0.2) ## pillar 1.4.6 2020-07-10 [1] CRAN (R 4.0.2) ## pkgbuild 1.1.0 2020-07-13 [1] CRAN (R 4.0.2) ## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.0) ## pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.2) ## plotrix * 3.7-8 2020-04-16 [1] CRAN (R 4.0.2) ## plyr 1.8.6 2020-03-03 [1] CRAN (R 4.0.0) ## ppcor 1.1 2015-12-03 [1] CRAN (R 4.0.2) ## prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0) ## processx 3.4.4 2020-09-03 [1] CRAN (R 4.0.2) ## proj4 1.0-10 2020-03-02 [1] CRAN (R 4.0.1) ## promises 1.1.1 2020-06-09 [1] CRAN (R 4.0.2) ## ps 1.3.4 2020-08-11 [1] CRAN (R 4.0.2) ## purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.0.0) ## R6 2.4.1 2019-11-12 [1] CRAN (R 4.0.0) ## ragg * 0.3.1 2020-07-03 [1] CRAN (R 4.0.2) ## RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.0.0) ## Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.2) ## readr * 1.3.1 2018-12-21 [1] CRAN (R 4.0.0) ## readxl 1.3.1 2019-03-13 [1] CRAN (R 4.0.0) ## remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2) ## reprex 0.3.0 2019-05-16 [1] CRAN (R 4.0.0) ## reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.0.0) ## rlang 0.4.7 2020-07-09 [1] CRAN (R 4.0.2) ## rmarkdown 2.3 2020-06-18 [1] CRAN (R 4.0.2) ## rprojroot 1.3-2 2018-01-03 [1] CRAN (R 4.0.0) ## rstudioapi 0.11 2020-02-07 [1] CRAN (R 4.0.0) ## Rttf2pt1 1.3.8 2020-01-10 [1] CRAN (R 4.0.2) ## rvest 0.3.6 2020-07-25 [1] CRAN (R 4.0.2) ## scales 1.1.1 2020-05-11 [1] CRAN (R 4.0.0) ## sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0) ## shiny 1.5.0 2020-06-23 [1] CRAN (R 4.0.2) ## sjlabelled 1.1.7 2020-09-24 [1] CRAN (R 4.0.2) ## sjmisc 2.8.5 2020-05-28 [1] CRAN (R 4.0.2) ## stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.2) ## stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.0.0) ## systemfonts 0.3.2 2020-09-29 [1] CRAN (R 4.0.2) ## testthat 2.3.2 2020-03-02 [1] CRAN (R 4.0.0) ## tibble * 3.0.3 2020-07-10 [1] CRAN (R 4.0.2) ## tidyr * 1.1.2 2020-08-27 [1] CRAN (R 4.0.2) ## tidyselect 1.1.0 2020-05-11 [1] CRAN (R 4.0.0) ## tidyverse * 1.3.0 2019-11-21 [1] CRAN (R 4.0.0) ## treemapify * 2.5.3 2019-01-30 [1] CRAN (R 4.0.2) ## usethis 1.6.3 2020-09-17 [1] CRAN (R 4.0.2) ## utf8 1.1.4 2018-05-24 [1] CRAN (R 4.0.0) ## uuid 0.1-4 2020-02-26 [1] CRAN (R 4.0.2) ## vctrs 0.3.4 2020-08-29 [1] CRAN (R 4.0.2) ## viridis 0.5.1 2018-03-29 [1] CRAN (R 4.0.2) ## viridisLite 0.3.0 2018-02-01 [1] CRAN (R 4.0.0) ## waterfall * 1.0.2 2016-04-03 [1] CRAN (R 4.0.2) ## withr 2.3.0 2020-09-22 [1] CRAN (R 4.0.2) ## xfun 0.18 2020-09-29 [1] CRAN (R 4.0.2) ## xml2 1.3.2 2020-04-23 [1] CRAN (R 4.0.0) ## xtable 1.8-4 2019-04-21 [1] CRAN (R 4.0.0) ## yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0) ## ## [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.