The Good, the Bad and the Ugly: how (not) to visualize data
This article is originally published at
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
Thanks for visiting r-craft.org
This article is originally published at
Please visit source website for post related comments.