├── .Rprofile ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── _workflowr.yml ├── analysis ├── _site.yml ├── about.Rmd ├── baseplots.Rmd ├── index.Rmd ├── license.Rmd └── tweets.Rmd ├── basegraphics.Rproj ├── code ├── 01-animate_covid-biorxiv.R ├── 01-barplot_BechdelTest.R ├── 02-splitbarplot_PopGermany.R ├── 03-dotplot_OldestCountry.R ├── 04-arrowplot_WomenInParliment.R ├── 05-linechart_COVIDrXiv.R ├── 05-linechart_CigConsumption.R ├── 06-scatterplot_RichGDP.R ├── 07-areachart_USmigration.R ├── 08-donutplot_TopWealth.R ├── 09-plot_CalFire.R ├── 10-donut_BloodGroup.R ├── 11-bubblechart_Furturejobs2030.R ├── 14-barplot_BerlinMarathon2022.R ├── 15-pieanimate_browserWars.R ├── 15-pieanimate_browserWars_compileData.R ├── 16-global_brands.R ├── 17-time-spent-with-relationships-by-age-us.R ├── 18-cleanEnergy_manufacturer.R ├── 19-barcodechart_USagegroup.R └── README.md ├── data ├── 01-barplot_BechdelTest.csv ├── 02-splitbarplot_PopGermany.csv ├── 03-dotplot_OldestCountry.csv ├── 04-arrowplot_WomenInParliment.csv ├── 05-linechart_COVIDrXiv.csv ├── 05-linechart_COVIDrxiv.tsv ├── 05-linechart_CigConsumption.csv ├── 06-scatterplot_RichGDP.csv ├── 06-scatterplot_data2.csv ├── 07-areachart_USmigration.csv ├── 08-donutplot_TopWealth.csv ├── 09-calfire_frap.csv ├── 10-donut_BloodGroup.tsv ├── 10-donut_BloodGroupCountry.tsv ├── 11-bubblechart_furturejobs2030.tsv ├── 14-barplot_BerlinMarathon2022.tsv ├── 15-GenzUnemnployment.tsv ├── 16-global_brands.csv ├── 17-time-spent-with-relationships-by-age-us.csv ├── 18-cleanEnergy_manufacturer.tsv ├── 19-barcodechart_USagegroup.csv ├── 21-top_gold_mining_stocks.tsv ├── 22-median_2022_student_debt.tsv ├── 23-marvel_boxoffocie.tsv ├── 24-data_cost.tsv ├── README.md ├── data.csv └── rangeplot_data.csv ├── docs ├── .nojekyll ├── about.html ├── baseplots.html ├── dark.css ├── figure │ └── baseplots.Rmd │ │ ├── Bechdel_test-1.png │ │ ├── DE_parliment-1.png │ │ ├── US_age_group-1.png │ │ ├── US_migration-1.png │ │ ├── berlin_marathon-1.png │ │ ├── blood_groups-1.png │ │ ├── cal_fires-1.png │ │ ├── cig_consumption-1.png │ │ ├── covi_rxiv-1.png │ │ ├── g7vsbrics-1.png │ │ ├── goldstocks-1.png │ │ ├── jobs-1.png │ │ ├── measles-1.png │ │ ├── oldest_country-1.png │ │ ├── pop_pyramid-1.png │ │ ├── rich_health-1.png │ │ ├── stdentdebt-1.png │ │ ├── timespent-1.png │ │ ├── top_wealth-1.png │ │ ├── unnamed-chunk-1-1.png │ │ ├── unnamed-chunk-2-1.png │ │ ├── unnamed-chunk-3-1.png │ │ └── women_parl-1.png ├── flatly.css ├── index.html ├── license.html ├── mint.css ├── site_libs │ ├── bootstrap-3.3.5 │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ ├── cerulean.min.css │ │ │ ├── cosmo.min.css │ │ │ ├── darkly.min.css │ │ │ ├── flatly.min.css │ │ │ ├── fonts │ │ │ │ ├── Lato.ttf │ │ │ │ ├── LatoBold.ttf │ │ │ │ ├── LatoItalic.ttf │ │ │ │ ├── NewsCycle.ttf │ │ │ │ ├── NewsCycleBold.ttf │ │ │ │ ├── OpenSans.ttf │ │ │ │ ├── OpenSansBold.ttf │ │ │ │ ├── OpenSansBoldItalic.ttf │ │ │ │ ├── OpenSansItalic.ttf │ │ │ │ ├── OpenSansLight.ttf │ │ │ │ ├── OpenSansLightItalic.ttf │ │ │ │ ├── Raleway.ttf │ │ │ │ ├── RalewayBold.ttf │ │ │ │ ├── Roboto.ttf │ │ │ │ ├── RobotoBold.ttf │ │ │ │ ├── RobotoLight.ttf │ │ │ │ ├── RobotoMedium.ttf │ │ │ │ ├── SourceSansPro.ttf │ │ │ │ ├── SourceSansProBold.ttf │ │ │ │ ├── SourceSansProItalic.ttf │ │ │ │ ├── SourceSansProLight.ttf │ │ │ │ └── Ubuntu.ttf │ │ │ ├── journal.min.css │ │ │ ├── lumen.min.css │ │ │ ├── paper.min.css │ │ │ ├── readable.min.css │ │ │ ├── sandstone.min.css │ │ │ ├── simplex.min.css │ │ │ ├── spacelab.min.css │ │ │ ├── united.min.css │ │ │ └── yeti.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ └── npm.js │ │ └── shim │ │ │ ├── html5shiv.min.js │ │ │ └── respond.min.js │ ├── header-attrs-2.14 │ │ └── header-attrs.js │ ├── header-attrs-2.15 │ │ └── header-attrs.js │ ├── header-attrs-2.17 │ │ └── header-attrs.js │ ├── header-attrs-2.20 │ │ └── header-attrs.js │ ├── header-attrs-2.21 │ │ └── header-attrs.js │ ├── highlightjs-9.12.0 │ │ ├── default.css │ │ ├── highlight.js │ │ └── textmate.css │ ├── jquery-3.6.0 │ │ ├── jquery-3.6.0.js │ │ ├── jquery-3.6.0.min.js │ │ └── jquery-3.6.0.min.map │ ├── jqueryui-1.11.4 │ │ ├── README │ │ ├── images │ │ │ ├── ui-icons_444444_256x240.png │ │ │ ├── ui-icons_555555_256x240.png │ │ │ ├── ui-icons_777620_256x240.png │ │ │ ├── ui-icons_777777_256x240.png │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ ├── index.html │ │ ├── jquery-ui.css │ │ ├── jquery-ui.js │ │ ├── jquery-ui.min.css │ │ ├── jquery-ui.min.js │ │ ├── jquery-ui.structure.css │ │ ├── jquery-ui.structure.min.css │ │ ├── jquery-ui.theme.css │ │ └── jquery-ui.theme.min.css │ ├── navigation-1.1 │ │ ├── codefolding-lua.css │ │ ├── codefolding.js │ │ ├── sourceembed.js │ │ └── tabsets.js │ └── tocify-1.9.1 │ │ ├── jquery.tocify.css │ │ └── jquery.tocify.js └── tweets.html ├── main.nf └── plots.png /.Rprofile: -------------------------------------------------------------------------------- 1 | ## This makes sure that R loads the workflowr package 2 | ## automatically, everytime the project is loaded 3 | if (requireNamespace("workflowr", quietly = TRUE)) { 4 | message("Loading .Rprofile for the current workflowr project") 5 | library("workflowr") 6 | } else { 7 | message("workflowr package not installed, please run install.packages(\"workflowr\") to use the workflowr functions") 8 | } 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Classify R Markdown files as R code for GitHub language statistics 2 | # https://github.com/github/linguist#overrides 3 | *.[Rr]md linguist-language=R 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | .Rapp.history 6 | .DS_Store 7 | analysis/figure 8 | analysis/*png 9 | analysis/*html 10 | analysis/*_cache 11 | analysis/site_libs 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Anand Mayakonda 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Introduction 2 | 3 | Do you like Data Visualization and `#Rstats`? 4 | 5 | Base graphics in R is a powerful, blazing fast, and offers extremely customization data visualization solutions. Unfortunately, in the world of `ggplot2`, base graphics is largely ignored due to lack proper documentations and howtos. 6 | 7 | This repository demonstrates the usage of base R graphics (along with code and datasets) to generate visually appealing plots, without any dependencies what so ever. 8 | 9 | This repository is for those who like to learn and customize base R plotting functions. `#BaseisBeautiful` :) 10 | 11 | ## Results 12 | 13 | * [Home page](https://poisonalien.github.io/basegraphics/index.html) 14 | * [Code and plots](https://poisonalien.github.io/basegraphics/baseplots.html) 15 | 16 | ## Data and code 17 | 18 | * Raw data is stored under [data](https://github.com/PoisonAlien/basegraphics/tree/main/data) directory 19 | * Individual code for each plot is stored under [code](https://github.com/PoisonAlien/basegraphics/tree/main/code) directory 20 | 21 | ## Twitter 22 | 23 | I also tweet plots [@baseRgraphics](https://twitter.com/baseRgraphics). Make sure to follow the account for updates :) 24 | 25 | ## Examples 26 | 27 | plots 28 | -------------------------------------------------------------------------------- /_workflowr.yml: -------------------------------------------------------------------------------- 1 | # workflowr options 2 | # Version 1.7.0 3 | 4 | # The seed to use for random number generation. See ?set.seed for details. 5 | seed: 20220715 6 | # The working directory to build the R Markdown files. The path is relative to 7 | # _workflowr.yml. See ?rmarkdown::render for details. 8 | knit_root_dir: "." 9 | -------------------------------------------------------------------------------- /analysis/_site.yml: -------------------------------------------------------------------------------- 1 | name: "basegraphics" 2 | output_dir: ../docs 3 | navbar: 4 | title: "basegraphics" 5 | left: 6 | - text: Home 7 | href: index.html 8 | - text: About 9 | href: about.html 10 | - text: License 11 | href: license.html 12 | output: 13 | workflowr::wflow_html: 14 | toc: yes 15 | toc_float: yes 16 | theme: cosmo 17 | highlight: textmate 18 | -------------------------------------------------------------------------------- /analysis/about.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "About" 3 | output: 4 | workflowr::wflow_html: 5 | toc: false 6 | editor_options: 7 | chunk_output_type: console 8 | --- 9 | 10 | Do you like `#Rstats` and `#Datavisualization`? This repository demonstrates base R to crate plots generated using base graphics with no dependencies. 11 | 12 | This is for those who like to learn and customize base R plotting functions. `#BaseisBeautiful` :) 13 | 14 | This repository is maintained by [Anand Mayakonda](https://poisonalien.github.io/) 15 | -------------------------------------------------------------------------------- /analysis/index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Home" 3 | site: workflowr::wflow_site 4 | output: 5 | workflowr::wflow_html: 6 | toc: false 7 | editor_options: 8 | chunk_output_type: console 9 | --- 10 | 11 | ## Introduction 12 | 13 | Base graphics in `R` is extremely powerful, blazing fast, and offers extremely customization data visualization solutions. Unfortunately, in the world of `ggplot2`, base graphics is largely ignored due to lack proper documentations and howtos. 14 | 15 | This document demonstrates the usage of base `R` graphics to generate visually appealing plots, without any dependencies. 16 | 17 | 18 | I also tweet plots [@baseRgraphics](https://twitter.com/baseRgraphics). Make sure to follow the account for updates :) 19 | 20 | ## Results 21 | 22 | See the below documents: 23 | 24 | * [Plots and code](baseplots.html) to see the results 25 | * [Tweets](tweets.html) 26 | 27 | ## Data and code 28 | 29 | * Raw data is stored under [data](https://github.com/PoisonAlien/basegraphics/tree/main/data) directory 30 | * Individual code for each plot is stored under [src](https://github.com/PoisonAlien/basegraphics/tree/main/src) 31 | 32 | plots 33 | -------------------------------------------------------------------------------- /analysis/license.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "License" 3 | output: 4 | workflowr::wflow_html: 5 | toc: false 6 | editor_options: 7 | chunk_output_type: console 8 | --- 9 | 10 | MIT License 11 | 12 | Copyright (c) 2022 Anand Mayakonda 13 | 14 | Permission is hereby granted, free of charge, to any person obtaining a copy 15 | of this software and associated documentation files (the "Software"), to deal 16 | in the Software without restriction, including without limitation the rights 17 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 18 | copies of the Software, and to permit persons to whom the Software is 19 | furnished to do so, subject to the following conditions: 20 | 21 | The above copyright notice and this permission notice shall be included in all 22 | copies or substantial portions of the Software. 23 | 24 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 27 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 28 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 29 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 | SOFTWARE. 31 | -------------------------------------------------------------------------------- /analysis/tweets.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Tweets" 3 | author: "Anand Mayakonda" 4 | output: workflowr::wflow_html 5 | editor_options: 6 | chunk_output_type: console 7 | --- 8 | 9 | ## Tweets 10 | 11 | I tweet the plots and base R tips and gotchas [@baseRgraphics](https://twitter.com/baseRgraphics). Follow me there for updates. 12 | 13 | 14 |

Migration to the US by world region between 1820-2009 - visualized as #areachart in base R.#RStats #Datavisualization https://t.co/U2VaDtskwD pic.twitter.com/0vKCDAcVSF

— basegRaphics (@baseRgraphics) July 14, 2022
15 | 16 |

Visualizing the 20th German Bundestag results as a #ParliamentPlot in pure base R.#RStats #Datavisualization https://t.co/U2VaDtskwD pic.twitter.com/XLOsJd1i77

— basegRaphics (@baseRgraphics) July 13, 2022
17 | 18 |

Recreating the popular measles vaccination plot by the @WSJ in base R (without any heatmap functions) #RStats #Datavisualization https://t.co/U2VaDtskwD pic.twitter.com/m0am21wmgu

— basegRaphics (@baseRgraphics) July 12, 2022
19 | 20 |

The richer, the healthier? Visualizing gapminder dataset as a #bubbleplot in base R. #RStats #Datavisualization https://t.co/U2VaDtskwD pic.twitter.com/Xuc4fd7MrR

— basegRaphics (@baseRgraphics) July 11, 2022
21 | 22 |

The rise and fall of cigarette consumption are visualized as #linechart using base graphics. #RStats #Datavisualization https://t.co/U2VaDtKtKL pic.twitter.com/FirzPAlAnV

— basegRaphics (@baseRgraphics) July 8, 2022
23 | 24 |

Frequency of #COVID19 articles over the years @biorxivpreprint and @medrxivpreprint visualized as #lineplot using pure base graphics #RStats #Datavisualization https://t.co/U2VaDtKtKL pic.twitter.com/FKjkRwy3JR

— basegRaphics (@baseRgraphics) July 7, 2022
25 | 26 |

Wealth distribution among selected countries visualized as #donutplots using pure base graphics #Rstats #dataviz https://t.co/U2VaDtKtKL pic.twitter.com/evT4tqmtD1

— basegRaphics (@baseRgraphics) July 7, 2022
27 | 28 |

The median population age of selected countries visualized as #DumbbellPlot in base #RStats #dataviz https://t.co/U2VaDtKtKL pic.twitter.com/1YoJuhVITw

— basegRaphics (@baseRgraphics) July 7, 2022
29 | -------------------------------------------------------------------------------- /basegraphics.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: No 4 | SaveWorkspace: No 5 | AlwaysSaveHistory: Yes 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | -------------------------------------------------------------------------------- /code/01-animate_covid-biorxiv.R: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env Rscript 2 | # Source code: https://github.com/PoisonAlien/COVID_rXiv 3 | # 4 | # MIT License 5 | # Copyright (c) 2020 Anand Mayakonda 6 | # 7 | # Code for parsing meta-data from COVID related articles from biorxiv and medrxiv. 8 | 9 | library(data.table) 10 | library(jsonlite) 11 | 12 | #api = "https://api.biorxiv.org/covid19/" 13 | #Get top 30 most recent and parse the total number of articles 14 | #max_articles = jsonlite::fromJSON(txt = paste0(api, "0")) 15 | #max = max_articles$messages[,"total"] 16 | #message("Total number of articles: ", max) 17 | #API returns 30 entries per query 18 | #batches = seq(0, max, 30) 19 | 20 | # meta_data = parallel::mclapply(batches, function(batch){ 21 | # jsonlite::fromJSON(txt = paste0(api, batch))[[2]][,c("rel_doi", "rel_site", "rel_date", "type", "category", "rel_num_authors")] 22 | # }, mc.cores = 4) 23 | # 24 | # meta_data = data.table::rbindlist(l = meta_data, use.names = TRUE, fill = TRUE) 25 | # if(nrow(meta_data) != max){ 26 | # warning("Some entries are missing!") 27 | # } 28 | # 29 | # #Save to file 30 | # data.table::fwrite(x = meta_data, file = "COVID_rxiv_2020-12-18.tsv.gz", sep = "\t") 31 | 32 | #Start from here if you have the file downloaded already 33 | 34 | meta_data = data.table::fread(input = "COVID_rxiv_2020-12-18.tsv.gz") 35 | 36 | meta_data = meta_data[order(rel_date, decreasing = FALSE)] 37 | meta_data$ym = substr(meta_data$rel_date, 1, 7) 38 | 39 | date_lvls = seq.Date(as.Date(meta_data[1,rel_date]), as.Date(meta_data[nrow(meta_data),rel_date]), 1) 40 | meta_data[, pub_date := as.character.Date(rel_date)] 41 | meta_data = meta_data[,pub_date := factor(x = meta_data$pub_date, levels = as.character.Date(date_lvls), ordered = TRUE)] 42 | 43 | by_site = as.data.frame(table(meta_data$pub_date, meta_data$rel_site)) 44 | data.table::setDT(by_site) 45 | colnames(by_site)[1] = "pub_date" 46 | by_site = data.table::dcast(data = by_site, pub_date ~ Var2, value.var = "Freq", fill = 0) 47 | 48 | by_site[, total := bioRxiv + medRxiv] 49 | by_site[, bioRxiv_cumsum := cumsum(bioRxiv)] 50 | by_site[, medRxiv_cumsum := cumsum(medRxiv)] 51 | by_site[, total_cumsum := cumsum(total)] 52 | by_site = by_site[order(pub_date)] 53 | 54 | by_site$Month = substr(by_site$pub_date, 1, 7) 55 | by_site$xax = 1:nrow(by_site) 56 | data.table::setDF(x = by_site) 57 | 58 | 59 | dir.create(path = "./pngs_bysrc/", showWarnings = FALSE, recursive = TRUE) 60 | xlabs = unlist(lapply(split(by_site, as.factor(by_site$Month)), function(x){min(x$xax)})) 61 | 62 | for(idx in seq_len(nrow(by_site))){ 63 | data = by_site[1:idx,, drop = FALSE] 64 | ylims = c(0, max(data[,"total_cumsum"], na.rm = TRUE)+5) 65 | xlims = c(0, max(data[,"xax"])+5) 66 | png(filename = paste0("pngs_bysrc/", by_site[idx, "pub_date"], ".png"), width = 8, height = 5.5, units = "in", bg = "white", res = 100) 67 | #png("~/Downloads/test.png", width = 8, height = 5.5, units = "in", bg = "white", res = 100) 68 | #Set some pretty background color and change default font font 69 | par(bg = "#dfe4ea", family = "mono") 70 | plot(x = data$xax, y = data$total_cumsum, type = 'l', axes = FALSE, xlab = NA, ylab = NA, xlim = xlims, ylim = ylims, lwd = 1.2, col = "#2f3542") 71 | text(x = by_site[idx, "xax"], y = by_site[idx, "total_cumsum"], labels = paste0("combined [", by_site[idx, "total_cumsum"], "]"), pos = 3, xpd = TRUE, col = "#2f3542") 72 | 73 | points(x = data$xax, y = data$bioRxiv_cumsum, type = 'l', lwd = 1.2, col = "#e74c3c") 74 | text(x = by_site[idx, "xax"], y = by_site[idx, "bioRxiv_cumsum"], labels = paste0("bioRxiv [", by_site[idx, "bioRxiv_cumsum"], "]"), pos = 3, xpd = TRUE, col = "#e74c3c") 75 | 76 | points(x = data$xax, y = data$medRxiv_cumsum, type = 'l', lwd = 1.2, col = "#3498db") 77 | text(x = by_site[idx, "xax"], y = by_site[idx, "medRxiv_cumsum"], labels = paste0("medRxiv [", by_site[idx, "medRxiv_cumsum"], "]"), pos = 3, xpd = TRUE, col = "#3498db") 78 | 79 | text(x = by_site[idx, "xax"], y = by_site[idx, "cumN"], labels = by_site[idx, "N"], pos = 1, xpd = TRUE) 80 | axis(side = 2, at = pretty(ylims), lwd = 0, las = 2, col = "#34495e", col.axis = "#34495e") 81 | axis(side = 1, at = xlabs, labels = names(xlabs), las = 2, col = "#34495e", col.axis = "#34495e") 82 | title(main = paste0(by_site[idx, "pub_date"]), adj = 0, line = 2, font.main = 3, col.main = "#c0392b") 83 | title(main = paste0("bioRxiv = ", by_site[idx, "bioRxiv"], ", medRxiv = ", by_site[idx, "medRxiv"], ", total = ", by_site[idx, "total"]), adj = 0, line = 1, font.main = 3, col.main = "#34495e") 84 | 85 | par(fig = c(0.05,0.55, 0.45, 1), new = TRUE) 86 | 87 | if(max(data$total) > 10){ 88 | b = boxplot(total ~ Month, data = data, axes = FALSE, xlab = NA, ylab = NA, outcex = 0.1, col = "#00b894", xlim = c(1, length(table(data$Month)))) 89 | axis(side = 2, at = pretty(data$total), las = 2, col = "#34495e", col.axis = "#34495e", lwd = 0, line = -1, cex.axis = 0.7) 90 | axis(side = 1, at = 1:length(unique(data$Month)), las = 2, col = "#34495e", col.axis = "#34495e", labels = unique(data$Month), las= 2, cex.axis = 0.7, lwd = 0, line = -1) 91 | } 92 | 93 | dev.off() 94 | } 95 | 96 | 97 | #Output should be a GIF: `covid_rxiv.gif` 98 | system(command = "convert -loop 0 -delay 3 pngs_bysrc/*.png covid_rxiv.gif") 99 | -------------------------------------------------------------------------------- /code/01-barplot_BechdelTest.R: -------------------------------------------------------------------------------- 1 | # Pretty barplots in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating barplot from https://www.datawrapper.de/charts/stacked-bar-chart 5 | 6 | 7 | data = read.table(file = "../data/01-barplot_data.csv", sep = ",", header = TRUE) 8 | colnames(data) = c("Decade", "3 of 3", "2 of 3", "1 of 3", "0 of 3") 9 | rownames(data) = data$Decade 10 | data$Decade = NULL 11 | data = t(data) 12 | 13 | #A simple barplot 14 | barplot(data, horiz = T, las = 2) 15 | 16 | #Now lets pimp it up 17 | ## Choose some color codes 18 | colorcodes = c("#1abc9c", "#2980b9", "#d35400", "#c0392b") 19 | 20 | pdf(file = "barplot.pdf", width = 7, height = 4, bg = "white") 21 | 22 | #Adjust the margins (bottom, left, top, and right) 23 | par(mar = c(4, 3, 3, 1)) 24 | 25 | b_idx = barplot( 26 | data, 27 | horiz = TRUE, 28 | las = 2, 29 | col = colorcodes, 30 | border = NA, 31 | axes = FALSE, 32 | names.arg = rep(NA, ncol(data)) 33 | ) 34 | mtext(text = colnames(data), side = 2, at = b_idx, las = 2, cex = 0.85, col = "#2c3e50") 35 | abline(v = seq(0, 100, 50), col = "gray90", lty = 1) 36 | axis( 37 | side = 3, 38 | at = seq(0, 100, 50), 39 | labels = paste0(seq(0, 100, 50), "%"), 40 | tick = FALSE, 41 | col.axis = "gray", 42 | line = -1, 43 | lwd = 0, cex.axis = 0.75 44 | ) 45 | 46 | mainttl = "Percentage of films that pass the Bechdel test" 47 | subttl = "Dataset includes 7,924 films.\nDataset has many more ratings for films released in recent decades, so earlier decades are likely to be less accurately represented.\nSome ratings given to films have been contested and may not be accurate." 48 | subttl2 = "Source: Bechdel Test Website" 49 | title(main = mainttl, line = 2, cex.main = 0.9, col = "#2c3e50") 50 | title( 51 | main = NA, 52 | sub = subttl, 53 | line = 3, 54 | col.sub = "#7f8c8d", 55 | adj = 1, 56 | font = 3, cex = 0.3, cex.sub = 0.5 57 | ) 58 | title( 59 | main = NA, 60 | sub = subttl2, 61 | line = 1.5, 62 | col.sub = "#7f8c8d", 63 | adj = 1, 64 | font = 3, cex = 0.3, cex.sub = 0.5 65 | ) 66 | 67 | legend( 68 | x = -1, y = -0.5, 69 | legend = rownames(data), 70 | border = NA, 71 | ncol = nrow(data), 72 | col = colorcodes, 73 | pch = 15, 74 | bty = "n", xpd = TRUE, title = "criteria passed", cex = 0.9, adj = 0) 75 | 76 | for(i in 1:ncol(data)){ 77 | text( 78 | y = b_idx[i], 79 | x = cumsum(data[, i]), 80 | labels = paste0(data[, i], "%"), 81 | cex = .6, adj = 1, col = "#ecf0f1" 82 | ) 83 | } 84 | 85 | dev.off() 86 | -------------------------------------------------------------------------------- /code/02-splitbarplot_PopGermany.R: -------------------------------------------------------------------------------- 1 | # Pretty split-barplots in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating split-barplot from https://www.datawrapper.de/charts/ 5 | 6 | data = read.table("../data/02-splitbarplot_data.csv", sep = ",", header = TRUE) 7 | max_count = max(data[,c("male", "female")]) #Maximum value 8 | 9 | pdf(file = "02-splitbarplot.pdf", width = 5, height = 4, bg = "white") 10 | par(mar = c(2, 3, 2, 1)) 11 | plot( 12 | NA, 13 | xlim = c(-max_count, max_count), 14 | ylim = c(1, nrow(data)), 15 | frame.plot = FALSE, 16 | axes = FALSE, 17 | xlab = NA, 18 | ylab = NA 19 | ) 20 | 21 | axis( 22 | side = 2, 23 | at = 1:nrow(data)+0.4, 24 | labels = rev(data$age.span), 25 | tick = FALSE, 26 | cex.axis = 0.8, las = 2, line = -1, col = "#34495e" 27 | ) 28 | 29 | for(i in 1:nrow(data)){ 30 | row_idx = rev(1:nrow(data))[i] #Plot the data from bottom to top 31 | 32 | rect(xleft = -max_count, ybottom = i, xright = -10, ytop = i+0.9, col = "#ecf0f1", border = NA) 33 | 34 | rect( 35 | xleft = -data[row_idx, "male"], 36 | xright = -10, 37 | ybottom = i, 38 | ytop = i + 0.9, col = "#2980b9", border = NA, 39 | ) 40 | pretty_pop_male = ifelse(test = data[row_idx, 2] < 1e6, 41 | yes = paste0(round(data[row_idx, 2] / 1000, 1), "k"), 42 | no = paste0(round(data[row_idx, 2] / 1e6, 1), "m")) 43 | 44 | if(data[row_idx, 2] < 1e6){ 45 | text( 46 | x = -data[row_idx, "male"], 47 | y = i + 0.4, 48 | labels = pretty_pop_male, 49 | pos = 2, 50 | outer = TRUE, 51 | xpd = TRUE, cex = 0.7, col = "black" 52 | ) 53 | }else{ 54 | text( 55 | x = -500, 56 | y = i + 0.4, 57 | labels = pretty_pop_male, 58 | pos = 2, 59 | outer = TRUE, 60 | xpd = TRUE, cex = 0.7, col = "white" 61 | ) 62 | } 63 | 64 | 65 | 66 | rect(xleft = -10, ybottom = i, xright = max_count, ytop = i+0.9, col = "#ecf0f1", border = NA) 67 | rect( 68 | xleft = data[row_idx, "female"], 69 | xright = 10, 70 | ybottom = i, 71 | ytop = i + 0.9, col = "#c0392b", border = NA 72 | ) 73 | pretty_pop_female = ifelse(test = data[row_idx, 3] < 1e6, 74 | yes = paste0(round(data[row_idx, 3] / 1000, 1), "k"), 75 | no = paste0(round(data[row_idx, 3] / 1e6, 1), "m")) 76 | 77 | if(data[row_idx, 2] < 1e6){ 78 | text( 79 | x = data[row_idx, "female"], 80 | y = i + 0.4, 81 | labels = pretty_pop_male, 82 | pos = 4, 83 | outer = TRUE, 84 | xpd = TRUE, cex = 0.7, col = "black" 85 | ) 86 | }else{ 87 | text( 88 | x = 500, 89 | y = i + 0.4, 90 | labels = pretty_pop_female, 91 | pos = 4, 92 | outer = TRUE, 93 | xpd = TRUE, cex = 0.7, col = "white" 94 | ) 95 | } 96 | } 97 | 98 | text(x = -max_count, y = nrow(data)+0.45, labels = "male", adj = 0, cex = 0.8, font = 1) 99 | text(x = max_count, y = nrow(data)+0.45, labels = "female", adj = 1, cex = 0.8, font = 1) 100 | 101 | title(main = "Population projection for Germany, 2020", line = 1, adj = 0, col.main = "#2c3e50") 102 | title(main = NA, sub = "Projection from 2015\nbased on continued trend with higher immigration 103 | ", line = 1, font.sub = 3, cex.sub = 0.6, adj = 1, col.sub = "#7f8c8d") 104 | 105 | dev.off() -------------------------------------------------------------------------------- /code/03-dotplot_OldestCountry.R: -------------------------------------------------------------------------------- 1 | # Pretty Dot plot in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating split-barplot from https://www.datawrapper.de/charts/ 5 | 6 | data = read.table("../data/03-dotplot_data.csv", sep = ",", header = TRUE) 7 | data$Country[1:3] = c("Monaco", "Japan", "Germany") 8 | xlims = range(data[,2:4]) 9 | 10 | pdf(file = "03-dotplot.pdf", width = 6, height = 5, bg = "white") 11 | par(mar = c(3, 5, 4, 1)) 12 | plot( 13 | NA, 14 | xlim = xlims, 15 | ylim = c(1, nrow(data)), 16 | frame.plot = FALSE, 17 | axes = FALSE, 18 | xlab = NA, 19 | ylab = NA 20 | ) 21 | 22 | abline(h = 1:nrow(data), col = "gray90") 23 | abline(v = pretty(xlims), col = "gray90") 24 | axis(side = 3, at = pretty(xlims), labels = pretty(xlims), col = "gray90", tick = FALSE, line = -1, cex.axis = 0.75, col.axis = "gray50") 25 | 26 | for(i in 1:nrow(data)){ 27 | combined = rev(data[,"Combined"])[i] 28 | male = rev(data[,"Male"])[i] 29 | female = rev(data[,"Female"])[i] 30 | 31 | rect(xleft = male, ybottom = i-0.2, xright = female, ytop = i+0.2, col = "#bdc3c7", border = NA) 32 | points(x = combined, y = i, col = "#34495e", pch = 19, cex = 1.5) 33 | points(x = male, y = i, col = "#60a3bc", pch = 19, cex = 1.5) 34 | points(x = female, y = i, col = "#e58e26", pch = 19, cex = 1.5) 35 | } 36 | 37 | legend( 38 | x = 32, y = -0.5, 39 | legend = c("Combined", "Male", "Female"), 40 | border = NA, 41 | ncol = 3, 42 | col = c("#34495e", "#60a3bc", "#e58e26"), 43 | pch = 19, 44 | bty = "n", xpd = TRUE, cex = 0.9, adj = 0) 45 | 46 | axis( 47 | side = 2, 48 | at = 1:nrow(data), 49 | labels = rev(data$Country), 50 | tick = FALSE, 51 | cex.axis = 0.8, las = 2, line = -1, col = "#34495e" 52 | ) 53 | 54 | title( 55 | main = "Germany is the third-oldest country in the world", 56 | line = 3, 57 | adj = 0, 58 | xpd = TRUE, 59 | cex.main = 1, 60 | col.main = "#2c3e50" 61 | ) 62 | 63 | title( 64 | main = "Median age in the three countries with the oldest population and selected other countries, in years", 65 | line = 2, 66 | adj = 0, 67 | xpd = TRUE, 68 | cex.main = 0.6, 69 | col.main = "#2c3e50" 70 | ) 71 | 72 | dev.off() -------------------------------------------------------------------------------- /code/04-arrowplot_WomenInParliment.R: -------------------------------------------------------------------------------- 1 | # Pretty Arrow plot in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating arrow plot from https://www.datawrapper.de/charts/ 5 | 6 | data = read.table("../data/04-arrowplot_data.csv", sep = ",", header = TRUE) 7 | colnames(data) = c("Country", "y2000", "y2020", "group") 8 | data$diff = data$y2020 - data$y2000 9 | 10 | pan_ratio = unname(unlist(lapply(split(data, ~group), nrow))) 11 | 12 | asia = split(data, ~group)[[1]] 13 | eu = split(data, ~group)[[2]] 14 | 15 | title_txt = "Most countries have a higher share of women in their national parliaments than twenty years ago" 16 | subtitle_txt = "Proportion of seats held by women in national parliaments, 2000 and 2020,\nin selected countries in Europe, Central Asia, East Asia and the Pacific" 17 | 18 | lo = layout(matrix(1:3, ncol = 1), heights = c(2, pan_ratio)) 19 | par(mar = c(0, 0, 0, 0)) 20 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 21 | text(x = 0, y = 0.8, labels = title_txt, cex = 1, font = 2, adj = 0) 22 | text(x = 0, y = 0.35, labels = subtitle_txt, cex = 1, font = 3, adj = 0) 23 | 24 | par(mar = c(2, 7, 1, 1)) 25 | 26 | lapply(split(data, ~group), function(dat){ 27 | plot( 28 | NA, 29 | xlim = c(0, 50), 30 | ylim = c(1, nrow(dat)), 31 | frame.plot = FALSE, 32 | axes = FALSE, 33 | xlab = NA, 34 | ylab = NA 35 | ) 36 | abline(h = 1:nrow(dat), v = c(0, 25, 50), col = "gray90", lwd = 0.6, outer = FALSE) 37 | abline(v = 0, col = "gray") 38 | rect(xleft = dat$y2000, ybottom = 1:nrow(dat), xright = dat$y2020, ytop = 1:nrow(dat), lwd = 1.5, col = ifelse(test = dat$diff > 0, yes = "#3498db", no = "#eb2f06"), border = ifelse(test = dat$diff > 0, yes = "#3498db", no = "#eb2f06")) 39 | for(i in 1:nrow(dat)){ 40 | if(dat$diff[i] > 0){ 41 | points(x = dat$y2020[i], y = i, pch = ">", col = "#3498db") 42 | text(x = dat$y2020[i], y = i, labels = paste0(dat$y2020[i], "%"), col = "#0c2461", pos = 4, cex = 0.9, xpd = TRUE) 43 | }else{ 44 | points(x = dat$y2020[i], y = i, pch = "<", col = "#eb2f06") 45 | text(x = dat$y2020[i], y = i, labels = paste0(dat$y2000[i], "%"), pos = 2, col = "#eb2f06", cex = 0.9, xpd = TRUE) 46 | } 47 | } 48 | 49 | axis(side = 2, at = 1:nrow(dat), labels = dat$Country, las = 2, tick = FALSE, line = -0.75, col = "#2c3e50", cex.axis = 1) 50 | axis(side = 1, at = c(0, 25, 50), labels = paste0(c(0, 25, 50), "%"), tick = FALSE, line = -1, col.axis = "gray50", cex.axis = 1) 51 | 52 | title(x = "topright", main = dat$group[1], adj = 1, col.main = "#2c3e50", cex.main = 0.9) 53 | }) 54 | 55 | bottom_anno = split(data, ~group)[[2]] 56 | bottom_anno = unlist(bottom_anno[nrow(bottom_anno), c(2, 3)]) 57 | axis(side = 3, at = bottom_anno, labels = c("2000", "2020"), tick = FALSE, line = -1, col.axis = "#7f8c8d", cex.axis = 0.75) 58 | -------------------------------------------------------------------------------- /code/05-linechart_COVIDrXiv.R: -------------------------------------------------------------------------------- 1 | # Pretty Line chart in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Visualizing COVID-19 biorxiv/medrxiv articles 5 | 6 | arxiv_data = read.delim(file = "../data/COVID_rxiv_2020-12-18.tsv") 7 | arxiv_data$rel_date = as.Date.character(arxiv_data$rel_date) 8 | date_lvls = seq.Date(as.Date(arxiv_data[1,"rel_date"]), as.Date(arxiv_data[nrow(arxiv_data),"rel_date"]), 1) 9 | arxiv_data$date = factor(x = arxiv_data$rel_date, levels = as.character.Date(date_lvls), ordered = TRUE ) 10 | 11 | biorxiv = data.frame(n_articles = unlist(lapply(split(arxiv_data[arxiv_data$rel_site %in% "bioRxiv",], ~date), nrow))) 12 | medrxiv = data.frame(n_articles = unlist(lapply(split(arxiv_data[arxiv_data$rel_site %in% "medRxiv",], ~date), nrow))) 13 | 14 | data = merge(biorxiv, medrxiv, by = "row.names", suffixes = c("_biorxiv", "_medrxiv")) 15 | data$n_articles = rowSums(data[,c("n_articles_biorxiv", "n_articles_medrxiv")]) 16 | rownames(data) = data$Row.names 17 | #data = data.frame(n_articles = unlist(lapply(split(arxiv_data, ~date), nrow))) 18 | data$ym = substr(x = rownames(data), start = 1, stop = 7) 19 | data$yr = substr(x = rownames(data), start = 1, stop = 4) 20 | 21 | month_lines = cumsum(lapply(split(data, ~ym), nrow)) 22 | year_lines = cumsum(lapply(split(data, ~yr), nrow)) 23 | # 24 | heatcols = colorRampPalette(c("#EFF3FF", "#C6DBEF", "#9ECAE1", "#6BAED6", "#4292C6", "#2171B5", "#084594"))(180) 25 | 26 | par(mar = c(3, 3, 4, 1), family = "mono") 27 | plot(NA, xlim = c(0, nrow(data)), ylim = c(0, 170), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 28 | abline(v = month_lines, col = "gray90", lty = 1, lwd = 0.6) 29 | abline(v = year_lines[c("2020", "2021")], col = "#2c3e50", lwd = 0.9) 30 | abline(h = seq(0, 150, 25), col = "gray90", lwd = 0.9, lty = 2) 31 | 32 | axis(side = 1, at = month_lines, labels = substr(x = names(month_lines), 6, 7), las = 2, tick = FALSE, cex.axis = 0.6, line = -0.75, font.axis = 3, col.axis = "#95a5a6") 33 | axis(side = 2, at = seq(0, 150, 25), labels = seq(0, 150, 25), las = 2, tick = FALSE, line = -0.5, col.axis = "#95a5a6") 34 | axis(side = 3, at = year_lines[c("2020", "2021")], labels = c("2020", "2021"), tick = FALSE, line = -1, col.axis = "#8e44ad") 35 | 36 | pnt_col = "#95a5a6" 37 | # points( 38 | # x = 1:nrow(data), 39 | # y = data$n_articles, 40 | # pch = 20, 41 | # col = adjustcolor(col = pnt_col, alpha.f = .5), cex = 0.9 42 | # ) 43 | #lines(smooth.spline(x = 1:nrow(data), y = data$n_articles), col = pnt_col, lwd = 3) 44 | 45 | #e67e22 46 | biorxiv_col = "#e67e22" 47 | points( 48 | x = 1:nrow(data), 49 | y = data$n_articles_biorxiv, 50 | pch = 20, 51 | col = adjustcolor(col = biorxiv_col, alpha.f = 0.2), cex = 0.9 52 | ) 53 | lines(smooth.spline(x = 1:nrow(data), y = data$n_articles_biorxiv), col = biorxiv_col, lwd = 3) 54 | 55 | medrxiv_col = "#27ae60" 56 | points( 57 | x = 1:nrow(data), 58 | y = data$n_articles_medrxiv, 59 | pch = 20, 60 | col = adjustcolor(col = medrxiv_col, alpha.f = 0.2), cex = 0.9 61 | ) 62 | lines(smooth.spline(x = 1:nrow(data), y = data$n_articles_medrxiv), col = medrxiv_col, lwd = 3) 63 | 64 | #mtext(text = "Month", side = 1, line = 1.5, font = 2) 65 | #mtext(text = "# of articles", side = 2, line = 2, font = 2) 66 | 67 | title(main = "Frequency of COVID19 articles in bioRxiv and medRxiv", adj = 0, line = 2, col.main = "#34495e", cex.main = 1) 68 | 69 | legend(x = "topleft", legend = c("bioRxiv", "medRxiv"), col = c(biorxiv_col, medrxiv_col), bty = "n", lwd = 2) -------------------------------------------------------------------------------- /code/05-linechart_CigConsumption.R: -------------------------------------------------------------------------------- 1 | # Pretty Line chart in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating line chart from https://www.datawrapper.de/charts/ 5 | 6 | data = read.table("../data/05-linechart_data.csv", sep = ",", header = TRUE) 7 | data[data == "null"] = NA 8 | data = apply(data, 2, as.numeric) 9 | data = as.data.frame(data) 10 | rownames(data) = data$country 11 | 12 | max_count = max(data[,2:ncol(data)], na.rm = TRUE) 13 | 14 | title_main = "The rise and fall of cigarette consumption in developed countries" 15 | title_sub = "Sales of cigarettes per adult per day, in selected countries.\nFigures include manufactured cigarettes, as well as an estimated\nnumber of hand-rolled cigarettes,per adult (ages 15+) per day." 16 | 17 | layout(mat = matrix(data = c(1:2), nrow = 2), heights = c(2, 6)) 18 | 19 | par(mar = c(0, 0, 0, 0)) 20 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 21 | text(x = 0, y = 0.8, labels = title_main, cex = 1, font = 2, adj = 0) 22 | text(x = 0, y = 0.35, labels = title_sub, cex = 1, font = 3, adj = 0) 23 | 24 | par(mar = c(3, 2, 0, 1)) 25 | plot(NA, xlim = range(data$country), ylim = c(0, max_count), xlab = NA, ylab = NA, frame.plot = FALSE, axes = FALSE) 26 | axis(side = 2, at = seq(0, 12, 2), labels = seq(0, 12, 2), line = 0, col.axis = "gray", cex.axis = 1, las = 2, tick = FALSE) 27 | abline(h = seq(0, 12, 2), lwd = 1, col = "gray90") 28 | 29 | text(x = data$country[1], y = 10, labels = "Sold cigarettes\nper day per adult", cex = 0.7, xpd = TRUE, adj = 0) 30 | 31 | for(i in 2:ncol(data)){ 32 | points(x = data$country, y = data[,i], pch = "", type = "l", col = "#7f8c8d") 33 | } 34 | 35 | hghlt = c("United.States", "Germany", "France") 36 | hghlt_cols = c("#c0392b", "#16a085", "#2980b9") 37 | for(hghlt_idx in seq_along(hghlt)){ 38 | hghlt_col_idx = which(colnames(data) == hghlt[hghlt_idx]) 39 | points(x = data$country, y = data[,hghlt_col_idx], pch = "", type = "l", col = hghlt_cols[hghlt_idx], lwd = 2) 40 | } 41 | 42 | text(x = data$country[1], y = c(6:4), labels = hghlt, col = hghlt_cols, adj = 0) 43 | 44 | axis(side = 1, at = pretty(data$country), labels = pretty(data$country), line = 0, tick = TRUE, col.axis = "#7f8c8d", col = "#7f8c8d") -------------------------------------------------------------------------------- /code/06-scatterplot_RichGDP.R: -------------------------------------------------------------------------------- 1 | # Pretty Scatter plots in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating scatter plot from https://www.datawrapper.de/charts/ 5 | 6 | #data = read.table("06-scatterplot_data.csv", sep = ",", header = TRUE) 7 | data = data.table::fread(input = "../data/06-scatterplot_RichGDP.csv", data.table = FALSE) 8 | 9 | data$population = as.numeric(data$population) 10 | #data$bub_size = data$population/max(data$population, na.rm = TRUE) 11 | cols = c("#34495e", "#ff5252", "#34ace0", "#ffb142", "#218c74", "#84817a") 12 | cols = adjustcolor(col = cols, alpha.f = 0.6) 13 | names(cols) = names(table(data$regions)) 14 | 15 | title_main = "The richer, the healthier" 16 | title_sub = "GDP per person adjusted for differences in purchasing power (in 2011 international dollars) and life expectancy in years for selected countries, 2018.\nThe bigger a circle, the more people live in a country." 17 | 18 | pdf(file = "06-scatterplot.pdf", height = 3.5, width = 5, bg = "white") 19 | 20 | layout(mat = matrix(data = c(1:2), nrow = 2), heights = c(2, 6)) 21 | 22 | par(mar = c(0, 0, 0, 0)) 23 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 24 | text(x = 0, y = 0.8, labels = title_main, cex = 1, font = 2, adj = 0) 25 | text(x = 0, y = 0.6, labels = title_sub, cex = 0.6, font = 3, adj = 0) 26 | 27 | legend(x = .1, y = 0.4, legend = names(cols), col = cols, pch = 19, ncol = 3, bty = "n", cex = 0.7) 28 | 29 | 30 | 31 | data$logGDP = log10(data$`GDP per capita`) 32 | 33 | par(mar = c(2, 2, 0, 1)) 34 | plot(NA, xlim = range(pretty(data$logGDP)), ylim = c(50, 90), xlab = NA, ylab = NA, frame.plot = FALSE, axes = FALSE) 35 | axl_lb = round(10^pretty(data$logGDP)) 36 | axl_lb = ifelse(test = axl_lb > 1000, yes = paste0(round(axl_lb/1000), "k"), no = round(axl_lb)) 37 | 38 | axis(side = 1, at = pretty(data$logGDP), labels = axl_lb, col.axis = "#7f8c8d", tick = FALSE, col = "gray", cex.axis = 0.8, line = -.5) 39 | axis(side = 2, at = seq(50, 100, 10), col.axis = "#7f8c8d", tick = FALSE, col = "gray", cex.axis = 0.8, las = 2, line = -0.5) 40 | abline(h = seq(50, 100, 10), v = pretty(data$logGDP), col = "gray90") 41 | 42 | text(x = rev(pretty(data$logGDP))[1], y = 50, labels = "GDP per capita", col = "#34495e", adj = 1, cex = 0.7, font = 2) 43 | text(x = pretty(data$logGDP)[1], y = 90, labels = "Life Expectancy", col = "#34495e", adj = 0, cex = 0.7, font = 2) 44 | 45 | symbols( 46 | x = data$logGDP, 47 | y = data$`Life expectancy`, 48 | circles = sqrt(data$population / pi), 49 | inches = 0.18, add = TRUE, bg = cols[data$regions], fg = cols[data$regions] 50 | ) 51 | 52 | bot_cntrs = data[data$country %in% c("South Africa", "China", "Afghanistan", "Lesotho", "United Arab Emirates"),] 53 | text(x = bot_cntrs$logGDP, y = bot_cntrs$`Life expectancy`, labels = bot_cntrs$country, pos = 1, cex = 0.6, col = "#2c2c54") 54 | top_cntrs = data[data$country %in% c("Liberia", "Timor-Leste", "Nicaragua", "Costa Rica"),] 55 | text(x = top_cntrs$logGDP, y = top_cntrs$`Life expectancy`, labels = top_cntrs$country, pos = 3, cex = 0.6, col = "#2c2c54") 56 | 57 | dev.off() -------------------------------------------------------------------------------- /code/07-areachart_USmigration.R: -------------------------------------------------------------------------------- 1 | # Area diagrams in R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Data source: https://app.datawrapper.de/chart/wsfqj/visualize 5 | 6 | 7 | data = read.table(file = "../data/07-areachart_USmigration.csv", header = TRUE, sep = ",") 8 | 9 | #Maximum 10 | max_pop = max(rowSums(data[,2:ncol(data)])) 11 | 12 | layout(mat = matrix(data = c(1:2), nrow = 2), heights = c(0.75, 6)) 13 | 14 | par(family = "mono") 15 | par(mar = c(0, 0, 0, 0)) 16 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 17 | title_main = "Migration to the US by world region, 1820-2009" 18 | title_main2 = "The numbers are recorded by decade\nFor example, the numbers recorded for 1905 tell us the number of immigrants between 1900 and 1910." 19 | 20 | title(main = title_main, cex.main = 1, line = -1, family = "Helvetica", col.main = "#2C3A47", adj = 0) 21 | title(main = title_main2, cex.main = .75, line = -2.5, family = "Helvetica", col.main = "#2C3A47", adj = 0, font.main = 1) 22 | 23 | 24 | par(mar = c(1, 1, 1, 3)) 25 | plot( 26 | NA, 27 | xlim = range(data$Region.and.country.of.last.residence.1), 28 | ylim = c(0, max_pop), 29 | xlab = NA, 30 | ylab = NA, 31 | frame.plot = FALSE, 32 | axes = FALSE 33 | ) 34 | 35 | abline(h = pretty(c(0, max_pop)), col = "gray90") 36 | axis(side = 4, at = pretty(c(0, max_pop)), labels = paste0(seq(0, 12, 2), "M"), las = 2, tick = FALSE, line = .1, col.axis = "#34495e", cex.axis = 0.8) 37 | axis(side = 1, at = seq(1820, 2000, 10), tick = FALSE, cex.axis = 0.8, col.axis = "#34495e", line = -1.5) 38 | 39 | rect(xleft = 1914, ybottom = 0, xright = 1918, ytop = max_pop, col = "#95a5a6", border = NA) 40 | text(x = 1916, y = max_pop, labels = "WW1", cex = 0.75, pos = 3, xpd = TRUE, font = 4, adj = 1) 41 | rect(xleft = 1939, ybottom = 0, xright = 1945, ytop = max_pop, col = "#95a5a6", border = NA) 42 | text(x = 1942, y = max_pop, labels = "WW2", cex = 0.75, pos = 3, xpd = TRUE, font = 4, adj = 1) 43 | 44 | cols = c("white", "#1d81a2", "#004765", "#3a96b8", "#48adc0", "#329a9b", "#2b8589", 45 | "#257085", "#005d71", 46 | "#b4241c", "#cd3d2e", "#dc464b", "#e65340", 47 | "#ffa126", "#ffca76", "#ffe59c", "#fffbb1", "#ffdc6b", "#ffbb7f", 48 | "#009a69", "#003f65", "#181818", "black") 49 | #cols = adjustcolor(col = cols, alpha.f = 0.7) 50 | 51 | for(i in 22:2){ 52 | if(i > 2){ 53 | polygon( 54 | c( 55 | data[1, "Region.and.country.of.last.residence.1"], 56 | data$Region.and.country.of.last.residence.1, 57 | data[nrow(data), "Region.and.country.of.last.residence.1"] 58 | ), 59 | c(0, rowSums(data[, 2:i, drop = FALSE]), 0), 60 | col = cols[i], border = cols[i] 61 | ) 62 | 63 | }else{ 64 | polygon(data$Region.and.country.of.last.residence.1, 65 | data[,i], 66 | col = cols[i], border = cols[i]) 67 | } 68 | } 69 | 70 | to_hghlt = c("Germany", "United.Kingdom", "Austria.Hungary","Ireland", "Philippines", "Italy", "Russia", "India", "China", "Mexico", "Central.America") 71 | 72 | for(h in to_hghlt){ 73 | i = which(colnames(data) == h) 74 | max_idx = which(data[,i] == max(data[,i])) 75 | y_point = data[,i] + rowSums(data[,2:(i-1), drop = FALSE]) 76 | text(x = data[max_idx,1], y = y_point[max_idx], labels = colnames(data)[i], cex = 0.55, xpd = TRUE, font = 2, family = "mono", col = "#192a56") 77 | } 78 | 79 | text(x = 1900, y = 1e6, label = "EUROPE", col = "white", cex = 1.2, font = 2) 80 | text(x = 1990, y = 2e6, label = "ASIA", col = "white", cex = 1.2, adj = 0.8, font = 2) 81 | text(x = 1990, y = 6e6, label = "AMERICA", col = "#2c3e50", cex = 1.2, adj = 0.7, font = 2) -------------------------------------------------------------------------------- /code/08-donutplot_TopWealth.R: -------------------------------------------------------------------------------- 1 | # Pretty donut plots in base R 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating donut plot from https://www.datawrapper.de/charts/ 5 | 6 | data = read.table("../data/08-donutplot_data.csv", sep = ",", header = TRUE) 7 | 8 | #pdf(file = "08-donutplot.pdf", height = 4, width = 5, bg = "white") 9 | 10 | lo =layout(mat = matrix(data = c(1, 1, 1, 2:7), nrow = 3, ncol = 3, byrow = TRUE), heights = c(1.7, 3, 3)) 11 | 12 | par(mar = c(0, 0, 0, 0)) 13 | title_main = "Who gets which slice of the pie?" 14 | title_sub = "How much of the wealth of a country do the poorest 50% own?\nHow much do the top 10% own?" 15 | 16 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), frame.plot = FALSE, axes = FALSE, xlab = NA, ylab = NA) 17 | text(x = 0, y = 0.9, labels = title_main, cex = 1.5, font = 2, adj = 0) 18 | text(x = 0, y = 0.6, labels = title_sub, cex = 1.2, font = 3, adj = 0) 19 | legend(x = .1, y = 0.4, legend = c("bottom 50%", "next 40%", "top 10%"), col = c("#b33939", "#f7f1e3", "#40407a"), pch = 15, ncol = 3, bty = "n", cex = 1.4) 20 | 21 | par(mar = c(2, 2, 2, 2)) 22 | 23 | for (i in 2:ncol(data)) { 24 | pie( 25 | data[, i], 26 | radius = 1, 27 | clockwise = TRUE, 28 | labels = paste0(round(data[, i]), "%"), border = "white", 29 | col = c("#b33939", "#f7f1e3", "#40407a") 30 | ) 31 | points(x = 0, y = 0, pch = 19, cex = 10, col = "white", lwd = 0) 32 | title(main = colnames(data)[i], adj = 0) 33 | } 34 | 35 | #dev.off() 36 | -------------------------------------------------------------------------------- /code/09-plot_CalFire.R: -------------------------------------------------------------------------------- 1 | # Widlfiles in California 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating plot from https://www.buzzfeednews.com/article/peteraldhous/california-wildfires-people-climate 5 | # Original ggplot source: https://buzzfeednews.github.io/2018-07-wildfire-trends/ 6 | 7 | #download.file(url = "https://raw.githubusercontent.com/BuzzFeedNews/2018-07-wildfire-trends/master/data/calfire_frap.csv", destfile = "data/09-calfire_frap.csv") 8 | data = read.delim(file = "data/09-calfire_frap.csv", sep = ",") 9 | 10 | date_lvls = seq.Date(as.Date("1950/01/01"), as.Date("2017/12/31"), 1) 11 | md = names(table(substr(date_lvls, 6, 10))) 12 | 13 | data$reporting_date = factor(data$alarm_date, levels = as.character.Date(date_lvls), ordered = TRUE) 14 | data$reporting_date = as.Date(data$reporting_date) 15 | data = data[order(data$reporting_date),] 16 | data$md = substr(x = data$reporting_date, 6, 10) 17 | data$md = factor(x = data$md, levels = md, ordered = TRUE) 18 | 19 | #layout(mat = matrix(data = c(1:2), nrow = 2), heights = c(0.75, 6)) 20 | 21 | par(mar = c(1, 3, 3, 1), family = "mono") 22 | plot(NA, pch = NA, axes = FALSE, ylim = c(1950,2017), xlim = c(1, 366)) 23 | abline(h = 1950:2017, v = c(0, cumsum(table(substr(md, 1, 2)))), col = "gray90") 24 | abline(h = seq(1950, 2010, 10), col = adjustcolor("#34495e", 0.5), lwd = 1) 25 | symb_cols = adjustcolor(col = "#e74c3c", alpha.f = 0.6) 26 | symbols( 27 | x = data$md, 28 | y = data$year_, add = TRUE, 29 | circles = sqrt(data$gis_acres / pi), 30 | inches = 0.12, bty = "n", pch = 19, bg = symb_cols, fg = symb_cols 31 | ) 32 | axis(side = 1, at = cumsum(table(substr(md, 1, 2))), labels = month.abb, tick = FALSE, col.axis = "#34495e", line = -1.2, cex.axis = 0.7) 33 | axis(side = 2, at = seq(1950, 2010, 10), las = 2, tick = FALSE, line = -1, col.axis = "#34495e") 34 | 35 | title("Big fires have gotten more common in California", adj = 0, line = 2, family = "Helvetica", col.main = "#2C3A47") 36 | title("Each fire is a dot that is scaled by the area that ultimately burned, centered on the date on which\nthe alarm was sounded", adj = 0, line = 0, font.main = 1, cex.main = 0.8, family = "Helvetica", col.main = "#2C3A47") 37 | -------------------------------------------------------------------------------- /code/10-donut_BloodGroup.R: -------------------------------------------------------------------------------- 1 | # Blood group distribution across the world 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating plot from https://www.visualcapitalist.com/visualizing-the-most-widespread-blood-types-in-every-country/ 5 | 6 | data = read.delim(file = "data/10-donut_BloodGroup.tsv") 7 | data2 = read.delim(file = "data/10-donut_BloodGroupCountry.tsv") 8 | 9 | 10 | cols = hcl.colors(n = 8, palette = "Viridis", alpha = 0.8) 11 | cols = c("#c23616", "#f0932b", "#f9ca24", "#6ab04c", "#40739e", "#192a56", "#ff9ff3", "purple") 12 | 13 | # lomat = matrix(data = c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5, 14 | # 6,6,6,7,7,7,8,8,8,9,9,9,10,10,10, 15 | # 11,11,11,0,12,12,12,0,13,13,13,0,14,14,14, 16 | # 0,0,15,15,15,0,16,16,16,0,17,17,17,0,0), 17 | # nrow = 4, byrow = TRUE) 18 | 19 | lomat = matrix(data = c(rep(1, 5), 2:11, rep(12, 5)), nrow = 4, ncol = 5, byrow = TRUE) 20 | 21 | lo = layout(mat = lomat, heights = c(0.5, 3, 3, 1)) 22 | 23 | par(mar = c(0, 0, 0, 0), bg = "#ecf0f1") 24 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), axes = FALSE) 25 | title( 26 | main = "Distribution of Blood types by country", 27 | line = -3, 28 | cex.main = 2.3, 29 | col.main = "white", 30 | xpd = TRUE, 31 | outer = TRUE, 32 | family = "Helvetica", col.main = "#222f3e" 33 | ) 34 | # text( 35 | # x = 0.5, 36 | # y = 0.3, 37 | # label = "Distribution of Blood types by country", 38 | # cex = 2, 39 | # font = 2, 40 | # col = "white", xpd = TRUE, family = "Helvetica" 41 | # ) 42 | 43 | 44 | par(mar = c(1, 1, 1, 1)) 45 | 46 | for(i in 1:nrow(data2)){ 47 | pie( 48 | as.numeric(data2[i, 2:9]), 49 | clockwise = TRUE, 50 | col = cols, 51 | border = cols, 52 | labels = paste0(as.numeric(data2[i, 2:ncol(data)])[1:4], "%"), radius = 1.05, col.lab = "white", xpd = TRUE, cex = 0.8 53 | ) # 54 | points(x = 0, y = 0, pch = 19, cex = 8, col = "#ecf0f1", lwd = 0) 55 | #legend(x = "bottomright", legend = data[i,"Region"], bty = "n", cex.title = 1.2, adj = 0) 56 | text( 57 | x = 0, 58 | y = -2, 59 | label = paste0(data2[i, "Country"], "\n", data2[i, "Pop"]), 60 | family = "mono", 61 | cex = 1.5, 62 | xpd = TRUE, 63 | font = 2, 64 | col = "#535c68" 65 | ) 66 | } 67 | 68 | plot(NA, xlim = c(0, 1), ylim = c(0, 1), axes = FALSE) 69 | legend( 70 | x = "center", 71 | legend = c("O+", "A+", "B+", "AB+", "O-", "A-", "B-", "AB-"), 72 | col = cols, 73 | ncol = 8, 74 | pch = 15, bty = "n", cex = 1.7 75 | ) 76 | 77 | # for(i in 1:nrow(data)){ 78 | # pie( 79 | # as.numeric(data[i, 2:ncol(data)]), 80 | # clockwise = TRUE, 81 | # col = cols, 82 | # border = cols, 83 | # labels = paste0(as.numeric(data[i, 2:ncol(data)]), "%"), radius = 1.05, col.font = cols, xpd = TRUE, cex = 0.8 84 | # ) # 85 | # points(x = 0, y = 0, pch = 19, cex = 8, col = "white", lwd = 0) 86 | # #legend(x = "bottomright", legend = data[i,"Region"], bty = "n", cex.title = 1.2, adj = 0) 87 | # text(x = 0, y = -2, label = data[i,"Region"], family = "mono", cex= 1.4, xpd= TRUE, font = 2) 88 | # } 89 | 90 | 91 | -------------------------------------------------------------------------------- /code/11-bubblechart_Furturejobs2030.R: -------------------------------------------------------------------------------- 1 | # The 20 Fastest Growing Jobs in the Next Decade 2 | # MIT License 3 | # Copyright (c) 2022 Anand Mayakonda 4 | # Recreating plot from https://www.visualcapitalist.com/the-20-fastest-growing-jobs-in-the-next-decade/ 5 | 6 | data = read.delim(file = "data/11-bubblechart_furturejobs2030.tsv") 7 | 8 | cols = c("#16a085", "#2980b9", "#f39c12", "#8e44ad", "#e74c3c") 9 | cols = adjustcolor(col = cols, alpha.f = 0.6) 10 | names(cols) = names(table(data$categ)) 11 | 12 | par(mar = c(1, 4, 4, 4), family = "sans", bg = "#ecf0f1") 13 | plot(NA, xlim = range(pretty(data$median_ann_wage)), ylim = c(-40, 80), axes = FALSE, xlab = NA, ylab = NA) 14 | grid(col = "gray80") 15 | 16 | symbols( 17 | x = data$median_ann_wage, 18 | y = data$pct_empl_change, 19 | circles = sqrt(abs(data$num_empl_change / pi)), 20 | add = TRUE, inches = 0.9, bg = cols[data$categ], fg = "#ecf0f1" 21 | ) 22 | 23 | #rect(xleft = seq(45, 105, 15)*1000, ybottom = 75, xright = seq(60, 120, 15)*1000, ytop = 80, col = cols, border = cols) 24 | rect(xleft = seq(70, 110, 10)*1000, ybottom = 75, xright = seq(80, 120, 10)*1000, ytop = 80, col = cols, border = cols) 25 | text(x = seq(75, 115, 10)*1000, y = 85, labels = c("Computer&\nmath", "Health\nrerlated", "Office\nsupport", "Other", "Production"), xpd = TRUE, adj = 0.5, family = "sans", cex = 0.65) 26 | 27 | if("berryFunctions" %in% installed.packages()){ 28 | berryFunctions::roundedRect(xleft = 68*1000, ybottom = 72, xright = 122*1000, ytop = 90, xpd = FALSE, lwd = 1.4) 29 | }else{ 30 | rect(xleft = 40*1000, ybottom = 72, xright = 122*1000, ytop = 90, xpd = FALSE, lwd = 1.4) 31 | } 32 | 33 | axis(side = 2, at = seq(0, 80, 20), tick = FALSE, las = 2, labels = paste0(seq(0, 80, 20), "%"), col.axis = "#34495e", line = -0.75, cex.axis = 0.8) 34 | mtext(text = "Employment change %\n2020-2030", side = 2, at = 60, line = 2, col = "#2c3e50", cex = 0.9) 35 | 36 | axis(side = 4, at = seq(-20, -40, -20), tick = FALSE, las = 2, labels = paste0(seq(-20, -40, -20), "%"), col.axis = "#34495e", cex.axis = 0.8, line = -0.75) 37 | rect(xleft = 20000, ybottom = 0, xright = 120000, ytop = 0) 38 | text(x = pretty(data$median_ann_wage), y = 0, labels = paste0(pretty(data$median_ann_wage)/1000, "K"), pos = 3, col = "#34495e", xpd = TRUE, cex = 0.8) 39 | text(x = 120000, y = -3, label = "Median annual wage", family = "mono", cex = 0.8, font = 2, adj = 1, col = "#2c3e50") 40 | 41 | 42 | #Annotate some bubbles manually 43 | text(x = 30000, y = 50, label = ("Home health &\npersonal care aids"), cex = 0.6, col = "#34495e") 44 | text(x = 118000, y = 65, label = ("Nurse\npractitioners"), cex = 0.6, col = "#34495e") 45 | text(x = 95000, y = 40, label = ("Statisticians"), cex = 0.6, adj = 1, col = "#34495e") 46 | text(x = 60000, y = 42, label = ("PT assistants"), cex = 0.6, col = "#34495e") 47 | text(x = 60000, y = 42, label = ("PT assistants"), cex = 0.6, col = "#34495e") 48 | text(x = 56230, y = 63, label = ("Wind turbine &\nservice technicians"), cex = 0.6, col = "#34495e") 49 | 50 | rect(xleft = 85700, ybottom = 18, xright = 85700, ytop = 25.5, border = "#2980B999") 51 | text(x = 85700, y = 14, label = ("Genetic\ncounselors"), cex = 0.6, col = "#34495e") 52 | 53 | rect(xleft = 70000, ybottom = 20, xright = 70000, ytop = 29.6, border = "#2980B999") 54 | rect(xleft = 70000, ybottom = 29.6, xright = 74560, ytop = 29.6, border = "#2980B999") 55 | text(x = 70000, y = 17, label = ("Epidemiologists"), cex = 0.6, col = "#34495e") 56 | 57 | text(x = 65110, y = -30, label = ("Executive secretaries &\n admin assistants"), cex = 0.6, col = "#34495e") 58 | text(x = 46500, y = -29, label = ("Watch&\nclock repairers"), cex = 0.6, col = "#34495e") 59 | text(x = 105000, y = -38, label = ("Nuclear power\nreactor operator"), cex = 0.6, col = "#34495e") 60 | 61 | rect(xleft = 22140, ybottom = -20.1, xright = 29140, ytop = -20.1, border = "#8E44AD99") 62 | text(x = 22140, y = -22, label = ("Florists"), cex = 0.6, col = "#34495e") 63 | 64 | text(x = 31630, y = -34, label = ("Cutters&\ntrimmers"), cex = 0.6, col = "#34495e") 65 | 66 | title(main = "The 20 Fastest Growing and Declining Jobs", adj = 0, line = 2.5, cex.main = 1.4, col.main = "#2c3e50") 67 | title(main = "OVER THE NEXT DECADE", adj = 0, line = 1.5, cex.main = 0.9, col.main = "#2c3e50") 68 | -------------------------------------------------------------------------------- /code/14-barplot_BerlinMarathon2022.R: -------------------------------------------------------------------------------- 1 | data = read.delim(file = "data/14-barplot_BerlinMarathon2022.tsv", header = FALSE) 2 | 3 | data$secs = apply(X = data, MARGIN = 1, FUN = function(x){ 4 | sapply(strsplit(x = x, split = ":"), function(x) { 5 | as.numeric(x[1]) * 3600 + as.numeric(x[2]) * 60 + as.numeric(x[3]) 6 | }) 7 | }) 8 | data$mins = data$secs / 60 9 | data$cut = cut(x = data$mins, breaks = seq(90, 480, 1)) 10 | hcol = adjustcolor(col = '#d35400', alpha.f = 0.4) 11 | 12 | par(mar = c(3, 2, 3, 1), family = "mono") 13 | plot.new() 14 | plot.window(xlim = c(0, 390), ylim = range(table(data$cut))) 15 | abline(v = seq(0, 390, 30), col = "#ecf0f1") 16 | points(table(data$cut), type = 'h', col = hcol) 17 | #axis(side = 1, at = seq(0, 390, 30), labels = seq(90, 480, 30)/60, las = 2, col.axis = "#34495e", tick = FALSE, ) 18 | text( 19 | x = seq(0, 390, 30), 20 | y = -50, 21 | labels = c( 22 | "1:30", 23 | "2:00", 24 | "2:30", 25 | "3:00", 26 | "3:30", 27 | "4:00", 28 | "4:30", 29 | "5:00", 30 | "5:30", 31 | "6:00", 32 | "6:30", 33 | "7:00", 34 | "7:30", 35 | "8:00" 36 | ), 37 | srt = -45, 38 | xpd = TRUE, 39 | cex = 0.8, col = "#2c3e50" 40 | ) 41 | 42 | kipchoge_slot_idx = which(names(table(data$cut)) == "(121,122]") 43 | assefa_slot_idx = which(names(table(data$cut)) == "(135,136]") 44 | 45 | median_time = median(data$secs) #245.7 i.e: 04:05:42 46 | median_time_idx = which(names(table(data$cut)) == "(245,246]") 47 | 48 | rect(xleft = kipchoge_slot_idx, ybottom = 0, xright = kipchoge_slot_idx, ytop = 100, border = "#34495e", lwd = 1.2) 49 | text(x = kipchoge_slot_idx, y = 90, labels = "KIPCHOGE\n2:01:09", cex = 0.7, pos = 3, font = 2) 50 | 51 | rect(xleft = assefa_slot_idx, ybottom = 0, xright = assefa_slot_idx, ytop = 200, border = "#95a5a6", lwd = 1.2) 52 | text(x = assefa_slot_idx, y = 190, labels = "ASSEFA\n2:15:37", cex = 0.7, pos = 3, font = 2) 53 | 54 | rect(xleft = median_time_idx, ybottom = 0, xright = median_time_idx, ytop = 90, border = "#34495e", lwd = 1.2) 55 | text(x = median_time_idx, y = 90, labels = "MEDIAN\n04:05:42", cex = 0.7, pos = 3, font = 2) 56 | 57 | mtext(text = "TIME [H:MM]", side = 1, line = 2) 58 | mtext(text = "NUMBER OF ATHLETES", side = 2, line = 0.5) 59 | 60 | title(main = "BMW BERLIN-MARATHON 2022: FINISH TIMES", col.main = "#2c3e50") 61 | -------------------------------------------------------------------------------- /code/15-pieanimate_browserWars.R: -------------------------------------------------------------------------------- 1 | data = read.delim(file = "data/15-pieanimate_browserWars_compileData.tsv", header = TRUE) 2 | data$Total = round(data$Total, 2) 3 | data$browser = gsub(pattern = "Other", replacement = "others", x = data$browser) 4 | 5 | #Order by months 6 | data = lapply(split(data, data$year), function(x){ 7 | x[order(factor(x$month, levels = month.name)),] 8 | }) 9 | data = do.call(what = rbind, data) 10 | data$month = as.character(data$month) 11 | 12 | browsercols = c("#16a085", "#2980b9", "#f39c12", "#8e44ad", "#e74c3c", "gray") #hcl.colors(n = 6, palette = "Dark2") 13 | names(browsercols) = c("chrome", "explorer", "firefox", "opera", "safari", "others") 14 | 15 | #pie() with an added argument labcol 16 | pie2 = function (x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, 17 | init.angle = if (clockwise) 90 else 0, density = NULL, angle = 45, 18 | col = NULL, border = NULL, lty = NULL, main = NULL, labcol = "black", ...) 19 | { 20 | if (!is.numeric(x) || any(is.na(x) | x < 0)) 21 | stop("'x' values must be positive.") 22 | if (is.null(labels)) 23 | labels <- as.character(seq_along(x)) 24 | else labels <- as.graphicsAnnot(labels) 25 | x <- c(0, cumsum(x)/sum(x)) 26 | dx <- diff(x) 27 | nx <- length(dx) 28 | plot.new() 29 | pin <- par("pin") 30 | xlim <- ylim <- c(-1, 1) 31 | if (pin[1L] > pin[2L]) 32 | xlim <- (pin[1L]/pin[2L]) * xlim 33 | else ylim <- (pin[2L]/pin[1L]) * ylim 34 | dev.hold() 35 | on.exit(dev.flush()) 36 | plot.window(xlim, ylim, "", asp = 1) 37 | if (is.null(col)) 38 | col <- if (is.null(density)) 39 | c("white", "lightblue", "mistyrose", "lightcyan", 40 | "lavender", "cornsilk") 41 | else par("fg") 42 | if (!is.null(col)) 43 | col <- rep_len(col, nx) 44 | if (!is.null(border)) 45 | border <- rep_len(border, nx) 46 | if (!is.null(lty)) 47 | lty <- rep_len(lty, nx) 48 | angle <- rep(angle, nx) 49 | if (!is.null(density)) 50 | density <- rep_len(density, nx) 51 | twopi <- if (clockwise) 52 | -2 * pi 53 | else 2 * pi 54 | t2xy <- function(t) { 55 | t2p <- twopi * t + init.angle * pi/180 56 | list(x = radius * cos(t2p), y = radius * sin(t2p)) 57 | } 58 | for (i in 1L:nx) { 59 | n <- max(2, floor(edges * dx[i])) 60 | P <- t2xy(seq.int(x[i], x[i + 1], length.out = n)) 61 | polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i], 62 | border = border[i], col = col[i], lty = lty[i]) 63 | P <- t2xy(mean(x[i + 0:1])) 64 | lab <- as.character(labels[i]) 65 | if (!is.na(lab) && nzchar(lab)) { 66 | lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y) 67 | text(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, 68 | adj = ifelse(P$x < 0, 1, 0), col = labcol[i], ...) 69 | } 70 | } 71 | title(main = main, ...) 72 | invisible(NULL) 73 | } 74 | 75 | dataspl = split(data, data$date_obs) 76 | 77 | pngs = lapply(dataspl, function(x){ 78 | fname = tempfile(fileext = '.png') 79 | png(filename = fname, res = 110) 80 | par(mar = c(2, 4, 3, 4), family = "mono") #bg = "#ecf0f1" 81 | pie2( 82 | x = x$Total, 83 | labcol = rep("#2c3e50", nrow(x)), #browsercols[x$browser], 84 | col = browsercols[x$browser], 85 | radius = 1, 86 | labels = paste0(x$browser, "\n[", x$Total, "%]"), 87 | xpd = TRUE, 88 | outer = TRUE, cex = 1, border = browsercols[x$browser], font = 2 89 | ) 90 | points(x = 0, y = 0, pch = 19, cex = 18, col = "white", lwd = 0) 91 | text(x = 0, y = -.1, label = x$year[1], adj = 0.5, cex = 2, col = "#c0392b", font = 2) 92 | text(x = 0, y = .1, label = x$month[1], adj = 0.5, cex = 1.2, col = "#e74c3c", font = 2) 93 | 94 | title(main = "WEB BROWSERS MARKET SHARE\n2002-2022", adj = 0.5, cex.main = 1.5, line = 0, col.main = "#2c3e50") 95 | dev.off() 96 | fname 97 | }) 98 | 99 | pngs = unlist(pngs, use.names = FALSE) 100 | cmd = paste0("convert -loop 0 -delay 15 ", paste(pngs, collapse = ' '), " pianimate.gif") 101 | sys.log = system(command = cmd, intern = TRUE) 102 | -------------------------------------------------------------------------------- /code/15-pieanimate_browserWars_compileData.R: -------------------------------------------------------------------------------- 1 | browsers = c("opera", "safari", "explorer", "firefox", "chrome") 2 | 3 | browsers_data = lapply(browsers, function(browser){ 4 | browser_url = paste0("https://www.w3schools.com/browsers/browsers_", browser, ".asp") 5 | data = rvest::html_table(rvest::read_html(x = browser_url)) 6 | data = lapply(data, data.table::setDT) 7 | names(data) = unlist(lapply(data, function(x) colnames(x)[1])) 8 | data = lapply(data, function(x) {colnames(x)[1] = "month"; x}) 9 | data = data.table::rbindlist(l = data, use.names = TRUE, fill = TRUE, idcol = "year") 10 | #data = data[,.(year, month, Total)] |> data.table::dcast(formula = month ~ year, value.var = "Total", fill = 0) 11 | data[,.(year, month, Total)] 12 | }) 13 | 14 | names(browsers_data) = browsers 15 | browsers_data = data.table::rbindlist(l = browsers_data, use.names = TRUE, fill = TRUE, idcol = "browser") 16 | #browsers_data$month = factor(browsers_data$month, levels = month.name) 17 | 18 | browsers_data_fixed = lapply(split(browsers_data, browsers_data$year), function(yearly){ 19 | yearly = lapply(split(yearly, yearly$month), function(monthly){ 20 | if(nrow(monthly) > 0){ 21 | if(sum(monthly$Total) < 100){ 22 | unknown_brwsr = data.table::data.table( 23 | browser = "Other", 24 | year = monthly$year[1], 25 | month = as.character(monthly$month[1]), 26 | Total = 100 - sum(monthly$Total) 27 | ) 28 | monthly = data.table::rbindlist(l = list(monthly, unknown_brwsr), use.names = TRUE, fill = TRUE) 29 | } 30 | } 31 | monthly 32 | }) 33 | data.table::rbindlist(l = yearly, use.names = TRUE, fill = TRUE) 34 | }) 35 | browsers_data = data.table::rbindlist(l = browsers_data_fixed, use.names = TRUE, fill = TRUE) 36 | browsers_data[, date_obs := paste0( 37 | browsers_data$year, 38 | "-", 39 | factor( 40 | x = browsers_data$month, 41 | levels = month.name, 42 | labels = 1:12 43 | ) 44 | )] 45 | 46 | data.table::fwrite(x = browsers_data, file = "data/15-pieanimate_browserWars_compileData.tsv", sep = "\t") 47 | -------------------------------------------------------------------------------- /code/16-global_brands.R: -------------------------------------------------------------------------------- 1 | x = read.csv(file = "data/16-global_brands.csv") 2 | single_entries = names(which(table(x$name) == 1)) 3 | x = x[!x$name %in% single_entries,] 4 | 5 | 6 | mod_data = lapply(split(x, x$name), function(d){ 7 | brand = unique(d$name) 8 | category = unique(d$category) 9 | d_brand = lapply(1:(nrow(d)-1), function(idx){ 10 | val_idx = d[idx, "value"] 11 | val_idx_next = d[idx+1, "value"] 12 | 13 | date_idx = d[idx, "date"] 14 | date_idx_next = d[idx+1, "date"] 15 | 16 | seq_date = seq.Date(from = as.Date(date_idx), to = as.Date(date_idx_next), by = 'month') 17 | 18 | data.frame(date = seq_date, value = round(seq(from = val_idx, to = val_idx_next, length.out = length(seq_date)))) 19 | }) 20 | 21 | d_brand = do.call(what = "rbind", d_brand) 22 | d_brand$brand = brand 23 | d_brand$category = category 24 | d_brand 25 | }) 26 | 27 | colpal = c("#f39c12", "#f1c40f", "#3498db", "#ecf0f1", "#95a5a6", "#2c3e50", 28 | "#9b59b6", "#e74c3c", "#bdc3c7", "#e67e22", "#c0392b", "#27ae60", 29 | "#d35400", "#7f8c8d", "#16a085", "#8e44ad", "#1abc9c", "#34495e", 30 | "#2980b9", "#2ecc71", "#9AECDB", "#F8EFBA") 31 | 32 | mod_data = do.call(what = "rbind", mod_data) 33 | mod_data$date = as.Date(as.character(mod_data$date)) 34 | names(colpal) = names(table(mod_data$category)) 35 | 36 | 37 | fnames = lapply(split(mod_data, mod_data$date), function(pd){ 38 | pd = pd[!duplicated(pd$brand),] 39 | fname = NA 40 | if(nrow(pd) >= 12){ 41 | pd = pd[order(pd$value, decreasing = T),][1:12,] 42 | 43 | pd$value = ifelse(test = is.na(pd$value), yes = 0, no = pd$value) 44 | 45 | fname = tempfile(pattern = "gb", fileext = ".png") 46 | png(filename = fname, width = 750, height = 655, bg = "white", res = 120) 47 | par(mar = c(0, 6, 0, 0)) 48 | 49 | plot(NA, xlim = c(0, max(pd$value)), ylim = c(0, 13), frame.plot = FALSE, axes = FALSE, xlab =NA, ylab = NA) 50 | #main rect 51 | rect(xleft = 0, ybottom = seq(0.1, 11.1, by = 1), ytop = seq(0.9, 11.9, by = 1), xright = rev(pd$value), col = "#fdcb6e", border = "#fdcb6e") 52 | #add value to the end of rect 53 | text(x = rev(pd$value), y = seq(0.45, 11.45, by = 1), labels = rev(pd$value), adj = 1, cex = 0.6, col = "#636e72") 54 | #Add category to the beginning 55 | text(x = 0, y = seq(0.45, 11.45, by = 1), labels = rev(pd$category), adj = 0, cex = 0.6, col = "#636e72") 56 | #add brand name as row names 57 | text(x = -0.5, y = seq(0.45, 11.45, by = 1), labels = rev(pd$brand), adj = 1.1, xpd = TRUE, cex = 0.9, col = "#34495e") 58 | #add top y axis labs 59 | text(x = pretty(c(0, pd$value)), y = 12, labels = pretty(c(0, pd$value)), pos = 3, cex = 0.5) 60 | rect(xleft = pretty(c(0, pd$value)), ybottom = 0, xright = pretty(c(0, pd$value)), ytop = 12, col = "maroon", border = "white") 61 | #add year in progress 62 | legend(x = "bottomright", legend = unique(substr(pd$date, 1, 4)), col = "#2c3e50", bty = "n", text.font = 2, cex = 1.5) 63 | dev.off() 64 | 65 | } 66 | fname 67 | }) 68 | 69 | pngs = unlist(fnames, use.names = FALSE) 70 | cmd = paste0("convert -loop 0 -delay 8 ", paste(pngs, collapse = ' '), " globalbrands.gif") 71 | sys.log = system(command = cmd, intern = TRUE) 72 | -------------------------------------------------------------------------------- /code/17-time-spent-with-relationships-by-age-us.R: -------------------------------------------------------------------------------- 1 | data = read.delim("data/17-time-spent-with-relationships-by-age-us.csv", sep = ",") 2 | colnames(data) = c("Entity", "Code", "Year", "alone", "frinds", "children", "parents", "partner", "coworkers") 3 | 4 | cols = hcl.colors(n = 6, palette = "Dark 3") 5 | 6 | par(mar = c(2, 2, 4, 3)) 7 | plot(NA, xlim = c(15, 85), ylim = c(0, 8.4), xlab = NA, ylab = NA, axes = FALSE) 8 | grid() 9 | for(i in 4:ncol(data)){ 10 | points(x = data$Year, y = data[,i]/60, type = "l", col = cols[i-3]) 11 | points(x = data$Year, y = data[,i]/60, col = cols[i-3], cex = 0.3, pch = 19) 12 | text(x = 86, y = data[nrow(data),i]/60, labels = colnames(data)[i], pos = 4, xpd = TRUE, cex = 0.6) 13 | } 14 | 15 | ttl = "Who Americans Spend Their Time With, by Age" 16 | subttl = "\nAverage time spent with others is measured in minutes per day,and shown by \nthe age of the respondent.This is based on averages from surveys \nbetween 2009 and 2019." 17 | 18 | title(main = ttl, adj = 0, cex.main = 1, line = 3, col.main = "#2c3e50", family = "serif") 19 | title(main = subttl, adj = 0, cex.main = 0.7, line = 0.9, font.main = 1, col.main = "#7f8c8d", family = "serif") 20 | 21 | mtext(text = axTicks(side = 1), side = 1, at = axTicks(side = 1), line = 0.2, col = "#636e72", family = "mono") 22 | mtext(text = "Age in years", side = 1, line = 0.8, las = 1, at = 70, adj = 0, cex = 0.6, col= "#3c6382") 23 | 24 | mtext(text = axTicks(side = 2), side = 2, at = axTicks(side = 2), line = 0, las = 2, col = "#636e72", family = "mono") 25 | mtext(text = "Time spent in hours", side = 2, line = 0.8, las = 3, at = 6, adj = 0, cex = 0.6, col= "#3c6382") 26 | -------------------------------------------------------------------------------- /code/18-cleanEnergy_manufacturer.R: -------------------------------------------------------------------------------- 1 | lo_mat = matrix(data = c(1, 1, 2, 2, 3, 4), ncol = 2, byrow = TRUE) 2 | lo = layout(mat = lo_mat, widths = c(4, 0.6), heights = c(1, 0.8, 4)) 3 | 4 | title1 = "WHERE ARE THE CLEAN-ENERGY TECHNOLOGIES" 5 | title2 = "M A N U F A C T U R E D?" 6 | title3 = "As the market for low-emission solutions expands, China dominates the production of 7 | clean energy technologies and their components." 8 | 9 | par(mar = c(0, 0, 0, 0), bg = "#2d3436", col = "white") 10 | plot(NA, xlim = c(0, 1), ylim = c(0.1, 1), axes = FALSE) 11 | text(x = 0.5, y = 0.9, label = title1, font = 2, cex = 1.2) 12 | text(x = 0.5, y = 0.7, label = title2, font = 2, cex = 1.4) 13 | text(x = 0.5, y = 0.3, label = title3, xpd = TRUE, cex = 1.1) 14 | 15 | par(mar = c(0, 0, 0, 0), bg = "#2d3436", col = "white") 16 | plot(NA, xlim = c(0, 1), ylim = c(0.1, 0.6), axes = FALSE) 17 | country_cols = c("#c0392b", "#e67e22", "#16a085", "#3498db", "#95a5a6") 18 | names(country_cols) = c("China", "AsiaPacific", "Europe", "NorthAmerica", "Other") 19 | 20 | legend(x = 0, y = 0.5, legend = names(country_cols), 21 | col = country_cols, pch = 15, ncol = 5, cex = 1, 22 | border = NA, xpd = TRUE, box.col = "white", pt.cex = 1.8) 23 | 24 | data = read.delim("data/18-cleanEnergy_manufacturer.tsv") 25 | data$cat = paste(data$source, data$element, sep = "_") 26 | n_cat = rev(table(data$cat)[unique(data$cat)]) 27 | 28 | y_bottoms = seq(0.1, 16.1, 1) 29 | y_tops = seq(0.9, 16.9, 1) 30 | 31 | 32 | par(mar = c(2, 4, 0.5, 0), bg = "#2d3436", col = "white") 33 | plot(NA, xlim = c(0, 100), ylim = c(0, length(n_cat)), xlab = NA, ylab = NA, axes = FALSE) 34 | 35 | for(i in seq_len(length(n_cat))){ 36 | d = data[data$cat == names(n_cat)[i],] 37 | d_cumsum = cumsum(d$pct) 38 | x_right = cumsum(d$pct) 39 | x_left = c(0, d_cumsum[1:length(d_cumsum) - 1]) 40 | rect( 41 | xleft = x_left, 42 | ybottom = y_bottoms[i], 43 | xright = x_right, 44 | ytop = y_tops[i], 45 | col = country_cols[d$Country], border = "#34495e" 46 | ) 47 | text(x = 0, y = y_bottoms[i]+0.25, label = unique(d$element), cex = 0.7, pos = 2, xpd = NA) 48 | } 49 | 50 | at_lines = c() 51 | for(s in unique(data$source)){ 52 | at_lines = c(at_lines, length(unique(data[data$source == s, "element"]))) 53 | } 54 | 55 | rect(xleft = -100, ybottom = cumsum(rev(at_lines))-0.03, xright = 100, ytop = cumsum(rev(at_lines)), border = NA, col = "white", xpd = TRUE) 56 | rect(xleft = 0, ybottom = 0, xright = 0.1, ytop = 17, border = NA, col = "white", lwd = 2) 57 | rect(xleft = -100, ybottom = 0, xright = 100, ytop = 0+0.03, border = NA, col = "white", lwd = 2, xpd = NA) 58 | 59 | abline(v = 65, lty = 2) 60 | text(x = 65, y = 17.5, label = "China's avergae: 65%", col = country_cols["China"], xpd = NA, cex = 0.7, adj = -0.1) 61 | text(x = 50, y = 18.5, label = "Shares of manufacturing capacity by region, 2021", col = "white", xpd = NA, cex = 0.8, adj = 0.5, font = 2) 62 | text(x = 0, y = 17.5, label = "Component", col = "white", xpd = NA, cex = 0.8, adj = 0.1, font = 4, pos = 2) 63 | text(x = 105, y = 17.5, label = "Technology", col = "white", xpd = NA, cex = 0.8, adj = 0.1, font = 4, pos = 4) 64 | axis(side = 1, at = seq(0, 100, 20), line = 0, col = "white", col.ticks = "white", col.axis = "white") 65 | 66 | par(mar = c(2, 0, 0.5, 0), bg = "#2d3436", col = "white") 67 | plot(NA, xlim = c(0, 1), ylim = c(0, length(n_cat)), xlab = NA, ylab = NA, axes = FALSE) 68 | 69 | lbs = c("Electrolyzers", "Heat Pumps", "Fuel cell\nTrucks", "EV", "Solar", 70 | "Onshore\nWind", "Offshore\nWind") 71 | text(x = 0, y = c(0.25, 1.5, 3, 6, 9.5, 12.5, 15.5), labels = lbs, adj = 1, xpd = NA, cex = 0.7, pos = 4, font = 2) 72 | rect(xleft = -200, ybottom = cumsum(rev(at_lines))-0.03, xright = 100, ytop = cumsum(rev(at_lines)), border = NA, col = "white", xpd = TRUE) 73 | -------------------------------------------------------------------------------- /code/19-barcodechart_USagegroup.R: -------------------------------------------------------------------------------- 1 | data = read.csv(file = 'data/19-barcodechart_USagegroup.csv') 2 | rownames(data) = data$name 3 | data$name = NULL 4 | data = apply(data, 1, function(x) x/sum(x)) 5 | 6 | par(mar = c(2.4, 4, 2, 1), col = '#2c3e50', family = "serif") 7 | 8 | plot(NA, ylim = c(0, nrow(data)+0.5), xlim = c(0, 0.2), axes = FALSE, xlab = NA, ylab = NA) 9 | abline(v = seq(0, 0.3, 0.05), col = 'gray70', lwd = 0.2) 10 | abline(h = 1:nrow(data), col = 'gray80', lwd = 0.2, lty = 2) 11 | lapply(1:nrow(data), function(idx){ 12 | d = data[idx,] 13 | points(x = d, y = rep(idx, length(d)), pch = '|') 14 | }) 15 | axiscol = grDevices::adjustcolor(col = '#2c3e50', alpha.f = 0.9) 16 | axis(side = 2, at = 1:nrow(data), labels = c('<10', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79', '>80'), las = 2, tick = FALSE, col.axis = axiscol, cex.axis = 0.7) 17 | axis(side = 1, at = seq(0, 0.3, 0.05), labels = seq(0, 0.3, 0.05) * 100, tick = FALSE, line = -1, col.axis = axiscol, cex.axis = 0.7) 18 | mtext(text = 'Population (%)', side = 1, line = 1, adj = 1, cex = 0.6) 19 | mtext(text = 'Age (years)', side = 2, line = 3, adj = 0, cex = 0.6, las = 2, at = nrow(data)+1.2, padj = 3) 20 | 21 | title(main = "Percentage of each age class in every state of USA", cex.main = 0.85, adj = 0, col.main = "#2c3e50") 22 | -------------------------------------------------------------------------------- /code/README.md: -------------------------------------------------------------------------------- 1 | # Code 2 | 3 | Save command-line scripts and shared R code here. 4 | -------------------------------------------------------------------------------- /data/01-barplot_BechdelTest.csv: -------------------------------------------------------------------------------- 1 | Decade,3 of 3 test criteria passed,2 of 3,1 of 3,0 of 3 2 | 1920s,21.0,21.0,13.6,44.4 3 | 1930s,48.7,21.3,19.3,10.7 4 | 1940s,48.1,16.2,21.0,14.8 5 | 1950s,48.4,14.3,22.9,14.3 6 | 1960s,44.5,10.9,25.5,19.0 7 | 1970s,47.3,11.2,30.0,11.5 8 | 1980s,54.3,11.1,22.8,11.8 9 | 1990s,58.3,9.6,24.3,7.8 10 | 2000s,60.9,8.7,22.4,8.0 11 | 2010s,63.6,8.9,20.1,7.4 -------------------------------------------------------------------------------- /data/02-splitbarplot_PopGermany.csv: -------------------------------------------------------------------------------- 1 | age span,male,female 2 | 95-100,34000,138000 3 | 90-95,213000,490000 4 | 85-90,619000,1053000 5 | 80-85,1413000,1987000 6 | 75-80,1560000,1933000 7 | 70-75,1881000,2139000 8 | 65-70,2361000,2579000 9 | 60-65,2884000,2959000 10 | 55-60,3422000,3399000 11 | 50-55,3259000,3200000 12 | 45-50,2517000,2471000 13 | 40-45,2522000,2454000 14 | 35-40,2666000,2543000 15 | 30-35,2819000,2635000 16 | 23-30,2443000,2290000 17 | 20-25,2211000,2090000 18 | 15-20,1903000,1801000 19 | 10-15,1816000,1724000 20 | 5-10,1810000,1719000 21 | <5,1816000,1725000 -------------------------------------------------------------------------------- /data/03-dotplot_OldestCountry.csv: -------------------------------------------------------------------------------- 1 | Country,Combined,Male,Female 2 | 1st: Monaco,53.1,51.7,54.5 3 | 2nd: Japan,47.3,46,48.7 4 | 3rd: Germany,47.1,46,48.2 5 | Italy,45.5,44.4,46.5 6 | Greece,44.5,43.5,45.6 7 | Hong Kong,44.4,43.5,45 8 | Austria,44,42.8,45.1 9 | Spain,42.7,41.5,43.9 10 | Netherlands,42.6,41.5,43.6 11 | Finland,42.5,40.9,44.3 12 | South Korea,41.8,40.2,43.4 13 | France,41.4,39.6,43.1 14 | Poland,40.7,39,42.4 15 | United Kingdom,40.5,39.3,41.7 16 | Russia,39.6,36.6,42.5 17 | Norway,39.2,38.4,40 18 | United States,38.1,36.8,39.4 19 | New Zealand,37.9,37.1,38.8 20 | China,37.4,36.5,38.4 -------------------------------------------------------------------------------- /data/04-arrowplot_WomenInParliment.csv: -------------------------------------------------------------------------------- 1 | Country Name,2000,2020,group 2 | Japan,7.29,9.89,East Asia & Pacific 3 | Australia,22.97,30.46,East Asia & Pacific 4 | China,21.78,24.94,East Asia & Pacific 5 | Indonesia,8,20.35,East Asia & Pacific 6 | Malaysia,10.36,14.41,East Asia & Pacific 7 | New Zealand,30.83,40.83,East Asia & Pacific 8 | Finland,36.5,46,Europe & Central Asia 9 | France,10.92,39.51,Europe & Central Asia 10 | Germany,30.94,31.17,Europe & Central Asia 11 | Netherlands,36,33.33,Europe & Central Asia 12 | Norway,36.36,41.42,Europe & Central Asia 13 | Spain,28.29,44,Europe & Central Asia 14 | Switzerland,23,41.5,Europe & Central Asia 15 | United Kingdom,18.36,33.85,Europe & Central Asia 16 | Turkey,4.18,17.32,Europe & Central Asia -------------------------------------------------------------------------------- /data/05-linechart_COVIDrXiv.csv: -------------------------------------------------------------------------------- 1 | year,LandAverageTemperature,lower,upper 2 | 1753,15.092,13.163,17.021 3 | 1754,14.681,12.28,17.082 4 | 1755,14.397,12.461,16.333 5 | 1756,13.906,11.714,16.098 6 | 1757,17.61,13.288,21.932 7 | 1758,13.847,10.239,17.455 8 | 1759,12.526,9.876,15.176 9 | 1760,12.887,10.32,15.454 10 | 1761,19.021,16.325,21.717 11 | 1762,14.72,12.754,16.686 12 | 1763,16.391,14.637,18.145 13 | 1764,12.507,9.251,15.763 14 | 1765,13.953,11.578,16.328 15 | 1766,13.555,11.214,15.896 16 | 1767,13.361,10.802,15.92 17 | 1768,13.875,11.323,16.427 18 | 1769,14.461,10.792,18.13 19 | 1770,11.621,8.963,14.279 20 | 1771,13.828,12.393,15.263 21 | 1772,14.581,13.172,15.99 22 | 1773,14.484,13.399,15.569 23 | 1774,16.521,12.715,20.327 24 | 1775,14.719,13.661,15.777 25 | 1776,14.108,12.805,15.411 26 | 1777,12.743,11.665,13.821 27 | 1778,15.037,12.821,17.253 28 | 1779,13.659,11.801,15.517 29 | 1780,16.183,14.883,17.483 30 | 1781,14.285,12.589,15.981 31 | 1782,13.925,10.965,16.885 32 | 1783,13.069,11.726,14.412 33 | 1784,14.947,13.144,16.75 34 | 1785,14.468,12.253,16.683 35 | 1786,15.294,12.983,17.605 36 | 1787,13.451,11.026,15.876 37 | 1788,16.468,13.552,19.384 38 | 1789,15.462,13.54,17.384 39 | 1790,13.812,12.155,15.469 40 | 1791,13.612,12.553,14.671 41 | 1792,14.212,12.85,15.574 42 | 1793,14.336,11.472,17.2 43 | 1794,12.874,11.591,14.157 44 | 1795,14.295,12.13,16.46 45 | 1796,14.314,13.35,15.278 46 | 1797,14.107,12.494,15.72 47 | 1798,14.951,13.67,16.232 48 | 1799,14.869,13.561,16.177 49 | 1800,13.763,12.83,14.696 50 | 1801,14.676,13.116,16.236 51 | 1802,14.628,13.473,15.783 52 | 1803,15.106,14.162,16.05 53 | 1804,15.774,14.456,17.092 54 | 1805,14.702,13.551,15.853 55 | 1806,13.923,12.418,15.428 56 | 1807,14.138,12.533,15.743 57 | 1808,14.491,12.815,16.167 58 | 1809,12.656,11.175,14.137 59 | 1810,12.551,10.535,14.567 60 | 1811,11.956,10.573,13.339 61 | 1812,14.355,12.892,15.818 62 | 1813,14.521,13.644,15.398 63 | 1814,12.532,10.68,14.384 64 | 1815,14.394,12.023,16.765 65 | 1816,12.267,10.729,13.805 66 | 1817,12.072,11.015,13.129 67 | 1818,13.51,11.61,15.41 68 | 1819,13.038,11.868,14.208 69 | 1820,13.311,11.936,14.686 70 | 1821,13.039,11.75,14.328 71 | 1822,14.212,13.144,15.28 72 | 1823,14.197,13.171,15.223 73 | 1824,14.83,12.672,16.988 74 | 1825,14.007,12.844,15.17 75 | 1826,14.482,13.348,15.616 76 | 1827,14.684,14.022,15.346 77 | 1828,14.384,12.631,16.137 78 | 1829,14.225,13.313,15.137 79 | 1830,14.942,13.103,16.781 80 | 1831,13.58,12.408,14.752 81 | 1832,13.727,11.66,15.794 82 | 1833,13.803,12.383,15.223 83 | 1834,14.197,13.011,15.383 84 | 1835,13.129,12.436,13.822 85 | 1836,13.646,13.046,14.246 86 | 1837,13.526,11.908,15.144 87 | 1838,14.367,13.483,15.251 88 | 1839,14.411,13.469,15.353 89 | 1840,14.714,14.252,15.176 90 | 1841,14.552,13.815,15.289 91 | 1842,13.584,13.075,14.093 92 | 1843,13.991,13.446,14.536 93 | 1844,13.921,13.316,14.526 94 | 1845,14.319,13.594,15.044 95 | 1846,14.923,14.186,15.66 96 | 1847,14.25,13.65,14.85 97 | 1848,14.466,13.853,15.079 98 | 1849,14.458,13.78,15.136 99 | 1850,14.492,13.878,15.106 100 | 1851,14.531,13.925,15.137 101 | 1852,14.512,13.734,15.29 102 | 1853,14.645,13.986,15.304 103 | 1854,14.692,13.842,15.542 104 | 1855,13.926,13.291,14.561 105 | 1856,14.019,13.597,14.441 106 | 1857,13.953,13.161,14.745 107 | 1858,13.677,12.923,14.431 108 | 1859,13.827,13.26,14.394 109 | 1860,14.203,13.732,14.674 110 | 1861,13.967,13.49,14.444 111 | 1862,13.928,13.483,14.373 112 | 1863,13.765,13.123,14.407 113 | 1864,14.162,13.592,14.732 114 | 1865,14.22,13.678,14.762 115 | 1866,14.602,14.162,15.042 116 | 1867,14.223,13.822,14.624 117 | 1868,14.514,14.083,14.945 118 | 1869,14.337,13.888,14.786 119 | 1870,14.599,14.199,14.999 120 | 1871,14.29,13.908,14.672 121 | 1872,14.285,13.807,14.763 122 | 1873,14.287,13.88,14.694 123 | 1874,14.122,13.703,14.541 124 | 1875,14.144,13.747,14.541 125 | 1876,14.319,13.95,14.688 126 | 1877,14.642,14.24,15.044 127 | 1878,14.742,14.364,15.12 128 | 1879,14.238,13.859,14.617 129 | 1880,14.141,13.745,14.537 130 | 1881,14.203,13.859,14.547 131 | 1882,13.747,13.413,14.081 132 | 1883,14.011,13.656,14.366 133 | 1884,13.622,13.247,13.997 134 | 1885,13.972,13.603,14.341 135 | 1886,14.226,13.872,14.58 136 | 1887,14.021,13.678,14.364 137 | 1888,14.242,13.921,14.563 138 | 1889,14.225,13.898,14.552 139 | 1890,14.034,13.68,14.388 140 | 1891,13.93,13.592,14.268 141 | 1892,13.89,13.562,14.218 142 | 1893,14.318,13.979,14.657 143 | 1894,14.004,13.693,14.315 144 | 1895,14.053,13.741,14.365 145 | 1896,14.233,13.905,14.561 146 | 1897,14.31,13.94,14.68 147 | 1898,14.138,13.771,14.505 148 | 1899,14.159,13.826,14.492 149 | 1900,14.171,13.826,14.516 150 | 1901,14.339,13.989,14.689 151 | 1902,14.231,13.875,14.587 152 | 1903,13.992,13.626,14.358 153 | 1904,13.836,13.54,14.132 154 | 1905,14.077,13.77,14.384 155 | 1906,14.122,13.799,14.445 156 | 1907,13.769,13.462,14.076 157 | 1908,14.197,13.894,14.5 158 | 1909,14.06,13.761,14.359 159 | 1910,14.279,13.957,14.601 160 | 1911,14.082,13.79,14.374 161 | 1912,13.723,13.43,14.016 162 | 1913,14.137,13.839,14.435 163 | 1914,14.298,13.991,14.605 164 | 1915,14.443,14.148,14.738 165 | 1916,14.052,13.751,14.353 166 | 1917,14.259,13.963,14.555 167 | 1918,14.002,13.701,14.303 168 | 1919,14.274,13.975,14.573 169 | 1920,14.245,13.94,14.55 170 | 1921,14.436,14.134,14.738 171 | 1922,14.278,13.972,14.584 172 | 1923,13.984,13.684,14.284 173 | 1924,14.304,13.997,14.611 174 | 1925,14.066,13.766,14.366 175 | 1926,14.168,13.881,14.455 176 | 1927,14.323,14.021,14.625 177 | 1928,14.31,14.013,14.607 178 | 1929,13.957,13.643,14.271 179 | 1930,14.465,14.164,14.766 180 | 1931,14.576,14.274,14.878 181 | 1932,14.372,14.066,14.678 182 | 1933,14.236,13.936,14.536 183 | 1934,14.343,14.047,14.639 184 | 1935,14.331,14.039,14.623 185 | 1936,14.629,14.33,14.928 186 | 1937,14.375,14.077,14.673 187 | 1938,14.482,14.187,14.777 188 | 1939,14.395,14.104,14.686 189 | 1940,14.571,14.276,14.866 190 | 1941,14.694,14.403,14.985 191 | 1942,14.242,13.949,14.535 192 | 1943,14.46,14.16,14.76 193 | 1944,14.468,14.184,14.752 194 | 1945,14.213,13.926,14.5 195 | 1946,14.409,14.12,14.698 196 | 1947,14.349,14.065,14.633 197 | 1948,14.445,14.169,14.721 198 | 1949,14.199,13.929,14.469 199 | 1950,14.14,13.901,14.379 200 | 1951,14.324,14.084,14.564 201 | 1952,14.549,14.273,14.825 202 | 1953,14.392,14.108,14.676 203 | 1954,14.241,14.013,14.469 204 | 1955,14.242,14.065,14.419 205 | 1956,14.18,14.087,14.273 206 | 1957,14.129,13.925,14.333 207 | 1958,14.438,14.239,14.637 208 | 1959,14.449,14.318,14.58 209 | 1960,14.198,14.126,14.27 210 | 1961,14.288,14.209,14.367 211 | 1962,14.205,14.131,14.279 212 | 1963,14.506,14.408,14.604 213 | 1964,14.301,14.176,14.426 214 | 1965,14.078,13.939,14.217 215 | 1966,14.569,14.457,14.681 216 | 1967,14.331,14.162,14.5 217 | 1968,14.026,13.937,14.115 218 | 1969,14.218,14.109,14.327 219 | 1970,14.395,14.295,14.495 220 | 1971,14.139,14.033,14.245 221 | 1972,14.231,14.113,14.349 222 | 1973,14.435,14.306,14.564 223 | 1974,14.288,14.229,14.347 224 | 1975,14.351,14.255,14.447 225 | 1976,14.155,13.975,14.335 226 | 1977,14.631,14.52,14.742 227 | 1978,14.364,14.206,14.522 228 | 1979,14.114,14.06,14.168 229 | 1980,14.742,14.598,14.886 230 | 1981,14.738,14.656,14.82 231 | 1982,14.545,14.472,14.618 232 | 1983,14.408,14.338,14.478 233 | 1984,14.429,14.292,14.566 234 | 1985,13.973,13.886,14.06 235 | 1986,14.293,14.233,14.353 236 | 1987,14.89,14.746,15.034 237 | 1988,14.798,14.73,14.866 238 | 1989,14.612,14.528,14.696 239 | 1990,14.784,14.644,14.924 240 | 1991,14.987,14.932,15.042 241 | 1992,14.139,14.058,14.22 242 | 1993,14.595,14.485,14.705 243 | 1994,14.658,14.582,14.734 244 | 1995,15.116,15.037,15.195 245 | 1996,14.827,14.73,14.924 246 | 1997,14.565,14.433,14.697 247 | 1998,15.34,15.266,15.414 248 | 1999,14.853,14.752,14.954 249 | 2000,14.848,14.728,14.968 250 | 2001,15.161,15.06,15.262 251 | 2002,15.354,15.277,15.431 252 | 2003,14.983,14.799,15.167 253 | 2004,14.312,14.197,14.427 254 | 2005,15.19,15.096,15.284 255 | 2006,15.042,14.926,15.158 256 | 2007,15.23,15.115,15.345 257 | 2008,15.174,15.102,15.246 258 | 2009,15.231,15.083,15.379 259 | 2010,15.213,15.123,15.303 260 | 2011,15.482,15.369,15.595 261 | 2012,15.076,15,15.152 262 | 2013,15.003,14.877,15.129 263 | 2014,14.873,14.795,14.951 264 | 2015,15.051,14.965,15.137 -------------------------------------------------------------------------------- /data/05-linechart_CigConsumption.csv: -------------------------------------------------------------------------------- 1 | country,Austria,Canada,France,Germany,Japan,Netherlands,New Zealand,Spain,Sweden,Switzerland,United Kingdom,United States 2 | 1875,null,null,0.1,null,null,null,null,null,null,null,null,null 3 | 1880,null,null,0.1,null,null,null,null,null,null,null,null,null 4 | 1885,null,null,0.1,null,null,null,null,null,null,null,null,null 5 | 1890,null,null,0.1,null,null,null,null,null,null,null,null,null 6 | 1895,null,null,0.1,null,null,null,null,null,null,null,null,null 7 | 1900,null,null,0.2,null,null,null,null,null,null,null,null,0.1 8 | 1901,null,null,0.2,null,null,null,null,null,null,null,null,0.1 9 | 1902,null,null,0.2,null,null,null,null,null,null,null,null,0.1 10 | 1903,null,null,0.2,null,null,null,null,null,null,null,null,0.1 11 | 1904,null,null,0.2,null,null,null,null,null,null,null,null,0.2 12 | 1905,null,null,0.2,null,null,null,null,null,null,null,1.1,0.2 13 | 1906,null,null,0.2,0.2,null,null,null,null,null,null,1.1,0.2 14 | 1907,null,null,0.3,0.3,null,null,null,null,null,null,1.2,0.2 15 | 1908,null,null,0.3,0.4,null,null,null,null,null,null,1.3,0.2 16 | 1909,null,null,0.3,0.4,null,null,null,null,null,null,1.3,0.3 17 | 1910,null,null,0.3,0.5,null,null,null,null,null,null,1.4,0.4 18 | 1911,null,null,null,0.6,null,null,null,null,null,null,1.6,0.4 19 | 1912,null,null,null,0.7,null,null,null,null,null,null,1.7,0.5 20 | 1913,null,null,0.4,0.7,null,null,null,null,null,null,1.8,0.6 21 | 1914,null,null,null,null,null,null,null,null,null,null,1.9,0.6 22 | 1915,null,null,null,null,null,null,null,null,null,null,2.2,0.7 23 | 1916,null,null,null,null,null,null,null,null,null,null,2.1,1 24 | 1917,null,null,null,null,null,null,null,null,null,null,2.2,1.4 25 | 1918,null,null,null,null,null,null,null,null,null,null,2.3,1.7 26 | 1919,null,null,null,null,null,null,null,null,null,null,3.1,1.8 27 | 1920,null,1,null,null,1.6,null,1.6,1,1,null,3,1.7 28 | 1921,null,1.1,null,null,1.7,null,1.2,1,0.9,null,2.8,1.9 29 | 1922,null,0.9,null,null,1.8,null,1.3,1.1,0.7,null,2.7,1.9 30 | 1923,2.5,1,0.7,null,2,1.1,1.5,1.2,0.7,null,2.7,2.3 31 | 1924,2.9,1.1,0.9,null,2.1,1.4,1.6,1.1,0.7,null,2.8,2.5 32 | 1925,2.9,1.2,null,1.7,2,1.1,1.8,1,0.7,null,3,2.7 33 | 1926,3.1,1.4,null,1.6,2,1.3,1.8,0.9,0.7,null,3,3 34 | 1927,3.3,1.6,null,1.8,2.1,1.4,1.8,1,0.8,null,3.2,3.8 35 | 1928,3.4,1.8,null,1.8,2.2,1.4,1.8,1.2,0.9,null,3.5,4 36 | 1929,3.5,2.1,null,1.8,2.2,1.6,1.9,1.3,1,null,3.7,4.3 37 | 1930,3.5,2,null,1.6,2,1.8,1.6,1.4,1.1,null,3.9,4.3 38 | 1931,3.3,1.7,null,1.5,2,1.7,1.2,1.3,1.2,null,3.9,4.3 39 | 1932,3.4,1.4,1.6,2.3,2.1,1.8,1,1.4,1.2,null,4.1,4.4 40 | 1933,3,1.6,1.6,2.3,2.2,1.9,1,1.3,1.1,null,4.2,4.8 41 | 1934,2.9,1.8,1.5,2.5,2.3,1.8,1.1,1.2,1.1,1.5,4.4,5.3 42 | 1935,2.9,1.9,1.4,2.5,2.4,1.9,1.4,1.1,1,1.5,4.7,5.7 43 | 1936,2.9,2,1.5,2.6,2.4,1.8,1.7,null,1,1.5,4.9,6 44 | 1937,2.8,2.3,1.6,2.8,2.5,1.9,1.9,null,1,1.5,5.2,6 45 | 1938,3.2,2.4,1.6,3.2,2.5,2.1,2.1,null,1,1.9,5.5,6.1 46 | 1939,4,2.4,1.8,null,2.9,2.3,2.1,null,1.1,1.9,5.7,6.3 47 | 1940,5,2.6,1.7,null,3.1,null,1.9,1,1.1,1.9,5.6,6.5 48 | 1941,5.8,2.9,1.4,null,3.1,null,2,1.1,1.2,2.3,6.2,6.8 49 | 1942,5.3,3.3,1,null,3.2,null,2.3,1.1,1.2,2.2,6.5,7.4 50 | 1943,5.3,3.6,0.9,null,3.2,null,2.3,1.3,1.2,2.6,6.5,7.8 51 | 1944,4.2,3.7,0.8,null,2.7,null,2.5,1.3,1.2,2.8,6.5,7 52 | 1945,1.6,4.5,1.2,null,0.9,null,2.6,1.3,1.3,3.2,7.2,8.1 53 | 1946,1.1,4.7,1.6,null,0.9,1.4,3.4,1.4,1.6,3.5,7.6,8.9 54 | 1947,1.6,4.7,2.1,null,1,2.2,4.3,1.5,1.9,4,6.7,9.1 55 | 1948,2,4.8,2.3,null,1.9,2.1,3.4,1.3,2,3.9,6.5,9.3 56 | 1949,2.5,4.9,2.4,null,2.8,2.4,3.4,1.4,2,4,6.4,9.3 57 | 1950,3,4.9,4.4,2.7,3.3,3.1,7.6,1.2,2.5,4.1,6.5,9.3 58 | 1951,3.5,4.4,4.4,3.1,3.7,3.2,8,1.3,2.5,4.3,6.8,9.8 59 | 1952,3.7,4.9,4.5,3.1,3.9,3.6,7.7,1.5,2.9,4.7,7,10 60 | 1953,3.8,5.7,4.4,3.3,4.3,3.8,7.7,1.7,2.9,4.6,7,9.7 61 | 1954,3.3,5.8,4.5,3.5,4.5,4.2,8,1.8,2.9,4.6,7.3,9.2 62 | 1955,3.7,8.6,4.6,3.8,4.5,4.3,8.2,2,3,4.8,7.5,9.4 63 | 1956,4.1,8.8,4.8,4,4.4,4.7,7.7,1.9,3.1,5.1,7.5,9.4 64 | 1957,4.3,9.3,5.1,4.4,4.5,4.8,8.1,3.8,3.2,5.3,7.7,9.7 65 | 1958,4.6,9.7,5.2,4.4,4.6,4.6,7.5,4.3,3.2,5.8,7.8,10.2 66 | 1959,4.7,9.9,4.9,4.7,4.8,4.6,7.3,4.2,3.3,5.9,8,10.5 67 | 1960,4.8,9.8,5,5.1,5.1,7.3,8.2,4.2,3.5,6.6,8.3,10.7 68 | 1961,4.7,10.2,5,5.4,5.6,7.5,8.2,4.5,3.7,7.2,8.4,11 69 | 1962,4.9,10.5,5.1,5.3,5.7,7.4,8.1,4.6,3.8,7.6,8.1,10.9 70 | 1963,5.1,10.5,5.1,5.4,5.9,7.6,8.4,4.7,3.9,7.6,8.3,11 71 | 1964,5.2,10.4,5.1,5.7,6.2,6.9,8.2,4.9,3.9,7.2,8.3,10.6 72 | 1965,5.4,10.7,5.3,6,6.4,8.4,8.1,5.3,4,8.5,8.1,10.7 73 | 1966,5.8,10.8,5.3,6.2,6.7,6.8,8.6,5.4,4.2,6.7,8.4,10.7 74 | 1967,5.9,10.6,5.6,6.1,7,7.7,8.3,5.6,4.2,7.7,8.5,10.7 75 | 1968,6,10.3,5.6,6.5,7,8.4,8.2,5.7,4.5,8.1,8.6,10.4 76 | 1969,6.2,10.1,5.6,6.8,7.5,7.7,8.2,5.7,4.7,9,8.8,10 77 | 1970,6.5,10.5,5.8,7.1,7.8,8.3,8.3,5.8,4.7,9.5,9,10.2 78 | 1971,6.6,10.5,5.9,7.5,8.2,8.4,8.2,5.9,4.6,10.3,8.5,9.9 79 | 1972,6.5,10.6,5.7,7.5,8.6,9.2,8.3,6.1,5.1,10.7,9.1,10.2 80 | 1973,7,10.8,5.9,7.3,8.9,9.7,8.3,6.4,4.2,9.3,9.5,10.7 81 | 1974,6.9,10.7,6.1,7.5,9.5,9.9,8.3,6.8,4.9,9.2,9.4,10.6 82 | 1975,6.6,10.6,6.3,7.3,9.5,9.9,8.6,6.4,5.1,8.6,9.2,10.4 83 | 1976,6.8,10.9,6.1,7.6,9.4,9.6,8.4,6.7,5.2,8.5,9,10.3 84 | 1977,6.9,10.7,6.3,7,9.7,10.8,8.5,7,4.9,8.8,8.7,10.2 85 | 1978,7,10.4,6.1,7.3,9.6,9.7,8.3,6.5,5.1,8.5,8.6,10 86 | 1979,7.2,10.5,6.2,7.4,9.6,10.4,7.9,7.2,5.1,8.2,8.4,9.9 87 | 1980,7.1,10.3,6.1,7.5,9.4,9.2,7.7,7,5.1,8.3,8.1,9.9 88 | 1981,7.1,10.3,6,7.6,9.5,8.8,7.8,6.4,4.9,8.4,7.5,9.9 89 | 1982,7,10.4,6,6.9,9.4,9.1,7.6,6.7,5.1,8.4,6.9,9.7 90 | 1983,7.2,9.7,6.1,7.2,9.3,9.8,7.5,6.7,4.9,8.5,6.9,9.1 91 | 1984,7,9.6,6.1,7.1,9.2,8,7.5,6.9,5,8.4,6.6,9 92 | 1985,7,9.1,6.4,7.2,9,8,6.7,7.3,4.9,8.1,6.5,8.8 93 | 1986,7,8.7,6.2,7,8.8,7.9,6.2,7.1,4.8,8.1,6.3,8.6 94 | 1987,6.8,8.3,6.1,7,8.7,7.6,6.2,7.2,4.7,8,6.3,8.3 95 | 1988,6.4,8,6,6.9,8.6,7.5,6.3,6.9,4.7,7.9,6.2,8.1 96 | 1989,6.2,7.3,6,7,8.6,7.5,5.1,7,4.6,7.9,6.3,7.6 97 | 1990,6.3,7,5.9,null,8.8,7.6,5.3,7.2,4.5,7.8,6.5,7.4 98 | 1991,6.4,6.3,6,6.6,8.9,8,4.7,7.3,4.5,7.8,6.2,7.1 99 | 1992,6.1,6.4,5.9,6.1,8.8,7.3,4.2,6.9,4.6,8.2,5.9,6.9 100 | 1993,5.8,6,5.7,5.9,8.8,6.6,4.2,6.3,3.8,7.6,5.7,6.6 101 | 1994,5.9,6.6,5.6,6,8.8,6.8,4,6.8,3.6,7.4,5.6,6.6 102 | 1995,5.6,5.9,5.4,6,8.8,6.8,4,6.3,3.4,7.3,5.7,6.5 103 | 1996,5.4,6.2,5.4,6,9.1,6.2,4.2,6,3.5,7.2,5.7,6.4 104 | 1997,5.7,5.8,5.2,6.1,8.5,6.5,4.1,6.6,2.6,7,5.6,6.3 105 | 1998,6.4,5.8,5.2,6.1,8.7,6.6,4,7.3,2.5,7.1,5.6,6 106 | 1999,6.6,5.7,5.2,6.4,8.5,6.4,3.8,7.1,2.8,6.8,5.8,5.7 107 | 2000,6.5,5.3,5.1,6.1,8.3,6.4,3.9,7.1,2.9,6.7,5.7,5.4 108 | 2001,6.3,5,5.2,6.2,8.1,6,3.4,7.2,2.9,6.5,5.6,5.3 109 | 2002,4.8,4.4,4.9,6.3,7.9,6.3,3.5,7.1,3,6.5,5.5,5.1 110 | 2003,4.6,4.2,4.3,5.9,7.6,6.2,3.1,7.1,2.9,6.6,5.4,4.9 111 | 2004,4.6,4,3.5,5.2,7.4,5.6,3.1,7.2,2.8,6.4,5.2,4.7 112 | 2005,null,3.7,3.5,5,7.2,5.1,3.3,7,2.7,5.7,5.1,4.5 113 | 2006,null,3.4,3.5,4.5,6.8,5.1,3.2,6.8,2.6,5.8,4.9,4.5 114 | 2007,null,3.2,3.5,4.4,6.5,5.3,3.2,6.6,null,5.4,4.7,4.2 115 | 2008,null,3,3.4,4.2,6.2,5.1,3.3,6.7,null,5.7,4.5,4 116 | 2009,null,3.1,3.5,4.3,5.9,4.6,3.1,6.1,null,5.6,4.3,3.7 117 | 2010,null,3.5,3.5,4.2,5.3,4.5,null,5.5,null,null,4,3.6 118 | 2011,null,null,null,4.4,4.9,1.5,null,null,null,null,3.5,3.5 119 | 2012,null,null,null,4.2,4.9,1.5,null,null,null,null,3.4,3.5 120 | 2013,null,null,null,4.1,4.9,null,null,null,null,null,3.2,3.3 121 | 2014,null,null,null,4.1,4.5,null,null,null,null,null,3,3.2 122 | 2015,null,null,null,4.2,4.6,null,null,null,null,null,null,null -------------------------------------------------------------------------------- /data/06-scatterplot_RichGDP.csv: -------------------------------------------------------------------------------- 1 | country,regions,GDP per capita,Life expectancy,population 2 | Georgia,Asia,10100,74.3,3910000 3 | Ecuador,South America,10200,78.3,16900000 4 | Namibia,Africa,10500,65.7,2590000 5 | Egypt,Africa,10800,72.6,99400000 6 | St. Lucia,North America,10900,76.6,180000 7 | Malawi,Africa,1130,61,19200000 8 | St. Vincent and the Grenadines,North America,11400,72,110000 9 | Tunisia,Africa,11600,78,11700000 10 | Indonesia,Asia,11700,72,267000000 11 | Mozambique,Africa,1200,61.1,30500000 12 | Mongolia,Asia,12100,68.7,3120000 13 | Bosnia and Herzegovina,Europe,12100,77.9,3500000 14 | Qatar,Asia,121000,80.7,2690000 15 | South Africa,Africa,12300,63.5,57400000 16 | Sri Lanka,Asia,12400,77.8,21000000 17 | Albania,Europe,12400,78,2930000 18 | Eritrea,Africa,1250,64.6,5190000 19 | Peru,South America,12700,80.2,32600000 20 | Guinea,Africa,1280,61.9,13100000 21 | Maldives,Asia,13000,80.1,444000 22 | Suriname,South America,13200,71.6,568000 23 | Lebanon,Asia,13400,80.5,6090000 24 | Grenada,North America,13500,71.9,108000 25 | Algeria,Africa,13700,77.9,42000000 26 | Colombia,South America,13700,78.6,49500000 27 | North Korea,Asia,1390,71.1,25600000 28 | "Macedonia, FYR",Europe,14000,75.2,2090000 29 | Venezuela,South America,14200,75.9,32400000 30 | Brazil,South America,14300,75.7,211000000 31 | Comoros,Africa,1440,68,832000 32 | Madagascar,Africa,1460,63.4,26300000 33 | Togo,Africa,1480,63.1,7990000 34 | Serbia,Europe,14800,76.2,8760000 35 | Sierra Leone,Africa,1490,60,7720000 36 | Timor-Leste,Australia,1490,73.3,1320000 37 | Dominican Republic,North America,15200,76.1,10900000 38 | Guinea-Bissau,Africa,1550,59.7,1910000 39 | Gambia,Africa,1570,67.8,2160000 40 | Iraq,Asia,15900,68,39300000 41 | Barbados,North America,16000,76.8,286000 42 | China,Asia,16000,76.9,1420000000 43 | Costa Rica,North America,16200,81.4,4950000 44 | Botswana,Africa,16500,66.9,2330000 45 | Azerbaijan,Asia,16600,72.3,9920000 46 | Montenegro,Europe,16600,77.3,629000 47 | Thailand,Asia,16900,78.2,69200000 48 | Burkina Faso,Africa,1710,61.6,19800000 49 | Haiti,North America,1710,64.5,11100000 50 | Belarus,Europe,17200,73.8,9450000 51 | Mexico,North America,17300,76.8,131000000 52 | Iran,Asia,17400,76.5,82000000 53 | Gabon,Africa,17500,67.3,2070000 54 | Turkmenistan,Asia,17900,70.5,5850000 55 | Ethiopia,Africa,1800,66.4,108000000 56 | South Sudan,Africa,1820,60.7,12900000 57 | Uganda,Africa,1820,62.9,44300000 58 | Libya,Africa,18300,75.5,6470000 59 | Chad,Africa,1860,60.5,15400000 60 | Afghanistan,Asia,1870,58.7,36400000 61 | Kiribati,Australia,1890,62.2,118000 62 | Bulgaria,Europe,18900,75.3,7040000 63 | Argentina,South America,18900,77,44700000 64 | Rwanda,Africa,1930,68.3,12500000 65 | Zimbabwe,Africa,1950,60.2,16900000 66 | Cuba,North America,20000,79.3,11500000 67 | Mali,Africa,2020,62.9,19100000 68 | Equatorial Guinea,Africa,20500,66.1,1310000 69 | Mauritius,Africa,21000,74.9,1270000 70 | Antigua and Barbuda,North America,21000,77.6,103000 71 | Solomon Islands,Australia,2110,63.6,623000 72 | Uruguay,South America,21300,77.6,3470000 73 | Benin,Africa,2170,65,11500000 74 | Bahamas,North America,21900,74.1,399000 75 | Croatia,Europe,22600,77.7,4160000 76 | Romania,Europe,23400,75.5,19600000 77 | Panama,North America,23400,79.4,4160000 78 | Chile,South America,23400,80.7,18200000 79 | Nepal,Asia,2420,71.5,29600000 80 | Kazakhstan,Asia,24200,72,18400000 81 | Yemen,Asia,2430,67.1,28900000 82 | Russia,Europe,24800,71.1,144000000 83 | Turkey,Asia,24900,79.6,81900000 84 | Latvia,Europe,25500,75.1,1930000 85 | Greece,Europe,25500,81.3,11100000 86 | Senegal,Africa,2570,66.8,16300000 87 | Hungary,Europe,26900,75.9,9690000 88 | Palestine,Asia,2700,72.2,5050000 89 | Malaysia,Asia,27200,75.9,32000000 90 | Seychelles,Africa,27500,74.2,95200 91 | Poland,Europe,27700,78.2,38100000 92 | Tanzania,Africa,2780,65.5,59100000 93 | Portugal,Europe,27900,81.3,10300000 94 | Papua New Guinea,Australia,2800,61.1,8420000 95 | Vanuatu,Australia,2900,64.3,282000 96 | Syria,Asia,2900,69.8,18300000 97 | Tajikistan,Asia,2920,72.2,9110000 98 | Estonia,Europe,29500,77.7,1310000 99 | Lesotho,Africa,2960,51.1,2260000 100 | Trinidad and Tobago,North America,30300,73.4,1370000 101 | Lithuania,Europe,30400,75.3,2880000 102 | Slovenia,Europe,30900,81.1,2080000 103 | Kenya,Africa,3110,67.3,51000000 104 | Slovak Republic,Europe,31400,77.2,5450000 105 | Cameroon,Africa,3170,61.2,24700000 106 | Sao Tome and Principe,Africa,3190,70.9,209000 107 | Cyprus,Europe,32200,80.8,1190000 108 | Czech Republic,Europe,32300,79.4,10600000 109 | Israel,Asia,33400,82.4,8450000 110 | "Micronesia, Fed. Sts.",Australia,3410,65.8,106000 111 | Spain,Europe,34700,83.2,46400000 112 | Kyrgyz Republic,Asia,3490,71.5,6130000 113 | Italy,Europe,35200,82.6,59300000 114 | Djibouti,Africa,3540,67.1,971000 115 | New Zealand,Australia,36400,81.8,4750000 116 | Mauritania,Africa,3670,70.6,4540000 117 | South Korea,Asia,36800,81.3,51200000 118 | Bangladesh,Asia,3720,73.4,166000000 119 | Cote d'Ivoire,Africa,3760,61.2,24900000 120 | Malta,Europe,37900,81.8,432000 121 | Cambodia,Asia,3830,69.3,16200000 122 | Zambia,Africa,3870,59.5,17600000 123 | Oman,Asia,38900,78.1,4830000 124 | France,Europe,39000,82.6,65200000 125 | Japan,Asia,39100,84.2,127000000 126 | United Kingdom,Europe,40100,81.2,66600000 127 | Finland,Europe,40300,82.1,5540000 128 | Belgium,Europe,42800,81.2,11500000 129 | Ghana,Africa,4380,66.6,29500000 130 | Canada,North America,43800,82.2,37000000 131 | Bahrain,Asia,44300,77.2,1570000 132 | Sudan,Africa,4440,68.8,41500000 133 | Austria,Europe,44600,81.8,8750000 134 | Germany,Europe,45200,81.3,82300000 135 | Australia,Australia,45800,82.9,24800000 136 | Honduras,North America,4590,73.1,9420000 137 | Denmark,Europe,46600,81.1,5750000 138 | Iceland,Europe,47400,82.6,338000 139 | Sweden,Europe,47500,82.4,9980000 140 | Netherlands,Europe,48500,81.9,17100000 141 | Saudi Arabia,Asia,50100,77.6,33600000 142 | Pakistan,Asia,5220,68,201000000 143 | Moldova,Europe,5330,72.4,4040000 144 | Nicaragua,North America,5470,78.7,6280000 145 | United States,North America,54900,79.1,327000000 146 | Tonga,Australia,5500,70.7,109000 147 | Nigeria,Africa,5570,66.1,196000000 148 | "Congo, Rep.",Africa,5620,63.9,5400000 149 | Switzerland,Europe,57100,83.5,8540000 150 | Angola,Africa,5850,65.2,30800000 151 | Samoa,Australia,5950,72.4,198000 152 | Myanmar,Asia,6100,70.3,53900000 153 | Somalia,Africa,629,58,15200000 154 | Lao,Asia,6310,67.9,6960000 155 | Cape Verde,Africa,6420,74.1,553000 156 | Norway,Europe,64800,82.4,5350000 157 | Vietnam,Asia,6550,74.9,96500000 158 | Ireland,Europe,65600,81.5,4800000 159 | Uzbekistan,Asia,6690,70.5,32400000 160 | United Arab Emirates,Asia,68200,76.9,9540000 161 | Kuwait,Asia,68400,80,4200000 162 | Central African Republic,Africa,689,51.6,4740000 163 | India,Asia,6890,69.1,1350000000 164 | Burundi,Africa,691,61.1,11200000 165 | Bolivia,South America,6980,74,11200000 166 | "Congo, Dem. Rep.",Africa,751,62.4,84000000 167 | Guatemala,North America,7530,73.2,17200000 168 | Swaziland,Africa,7600,58.6,1390000 169 | Brunei,Asia,76900,77.4,434000 170 | Belize,North America,7710,72.5,382000 171 | Morocco,Africa,7720,75.5,36200000 172 | Guyana,South America,7740,68.2,782000 173 | Philippines,Asia,7960,70.5,107000000 174 | Liberia,Africa,801,65.4,4850000 175 | El Salvador,North America,8290,75.8,6410000 176 | Ukraine,Europe,8330,72.3,44000000 177 | Singapore,Asia,83900,84,5790000 178 | Jordan,Asia,8450,76.7,9900000 179 | Jamaica,North America,8520,75.2,2900000 180 | Armenia,Asia,8660,76,2930000 181 | Paraguay,South America,9280,74.8,6900000 182 | Fiji,Australia,9420,65.8,912000 183 | Niger,Africa,949,62.5,22300000 184 | Luxembourg,Europe,99000,82.4,590000 185 | Bhutan,Asia,9930,74.8,817000 -------------------------------------------------------------------------------- /data/07-areachart_USmigration.csv: -------------------------------------------------------------------------------- 1 | Region and country of last residence 1,Austria-Hungary,Germany,Ireland,Italy,Russia,Norway and Sweden,United Kingdom,Rest of Europe,China,India,Philippines,Rest of Asia,Canada and Newfoundland,Mexico,Caribbean,Rest of America,Central America,South America,Africa,Oceania,Not Specified 2 | 1825,0,5753,51617,430,86,91,26336,15305,3,9,0,22,2297,3835,3061,463,57,405,19,2,19173 3 | 1835,0,124726,170672,2225,280,1149,74350,49451,8,38,0,9,11875,7187,11792,1057,94,957,66,1,83495 4 | 1845,0,385434,656145,1476,520,12389,218572,94887,32,33,0,56,34285,3069,11803,1370,297,1062,67,3,7196 5 | 1855,0,976072,1029486,8643,423,22202,445322,140469,35933,42,0,105,64171,3446,12447,4137,512,3569,104,110,71442 6 | 1865,3375,723734,427419,9853,1667,82937,532956,98448,54028,50,0,330,117975,1957,8809,1686,70,1536,458,107,15472 7 | 1875,60127,751769,422264,46296,34977,178823,578447,179347,133139,166,4,762,323974,5133,14592,2190,202,1109,441,9094,592 8 | 1885,314787,1445181,674061,267660,173081,586441,810900,366573,65797,247,1,5107,492508,2405,27600,7332,359,1954,768,7341,778 9 | 1895,534059,579072,405710,603761,413382,334058,328759,377610,15268,102,19,45915,2668,734,31885,3469,674,1389,432,3279,14112 10 | 1905,2001376,328722,344940,1930475,1501301,426981,469518,569256,19884,3026,605,276926,123067,31188,100960,22667,7341,15253,6326,11677,33493 11 | 1915,1154727,174227,166445,1229916,1106998,192445,371878,588775,20916,3478,0,245342,708715,185334,120860,55630,15692,39938,8867,12339,488 12 | 1925,60891,386634,201644,528133,61604,170329,342762,808343,30648,2076,0,94016,949286,498945,83482,59565,16511,43025,6362,9860,930 13 | 1935,13902,117736,28195,85053,2473,13452,61813,121780,5874,554,457,12407,162703,32709,18052,16855,6840,9990,2120,3240,0 14 | 1945,13677,119403,15701,50509,605,17326,131794,123509,16072,1692,4099,12669,160911,56158,46285,65081,20135,19662,6720,14262,135 15 | 1955,113015,576905,47189,189061,453,44231,195709,238410,8836,1922,17245,107841,353169,273847,115869,178759,40201,78418,13016,11319,12472 16 | 1965,27590,209616,37788,200111,2329,36150,220213,399646,14060,18638,70660,255205,433128,441824,427843,371390,98569,250754,23780,23659,119 17 | 1975,20387,77142,11461,150031,28132,10298,133218,395658,17627,148018,337726,903155,179267,621218,708643,394508,120376,273529,71405,39983,326 18 | 1985,20437,85752,22210,55562,33311,13941,153644,284837,170897,231649,502056,1486754,156313,1009586,789343,739262,339376,399803,141987,41432,305406 19 | 1995,27529,92207,65384,75992,433427,17825,156182,480673,342058,352528,534338,1630975,194788,2757418,1004114,1180822,610189,570596,346410,56800,25928 20 | 2005,33929,122373,15642,28329,167152,19382,171979,790823,591711,590464,545463,1743197,236349,1704166,1053357,1447657,591130,856508,759734,65793,211930 -------------------------------------------------------------------------------- /data/08-donutplot_TopWealth.csv: -------------------------------------------------------------------------------- 1 | next 40%,Canada,China,Norway,Germany,India,United States 2 | bottom 50%,5.6,11,1.1,0.1,4.2,1.1 3 | next 40%,46.7,40.6,49.4,42.4,33.7,23.9 4 | top 10%,47.7,48.4,49.5,57.5,62.1,75 -------------------------------------------------------------------------------- /data/10-donut_BloodGroup.tsv: -------------------------------------------------------------------------------- 1 | Region O+ A+ B+ AB+ O- A- B- AB- 2 | Asia 36.8 27.5 25 7.2 1.3 1.1 0.8 0.3 3 | Americas 54.5 27.8 36.8 2.1 4.3 2.5 0.7 0.2 4 | Africa 46.7 26.7 16.8 3.7 3.2 1.7 0.9 0.3 5 | Europe 33.3 35 11.9 4.8 5.9 6.2 2.1 0.9 6 | Oceania 42.3 33.4 10.8 3.2 5 3.6 1.2 0.6 7 | Middle East 41.8 27.7 16.6 4.3 4.4 3.1 1.5 0.5 8 | Caribbean 46.3 27.6 15.7 3 3.6 2.3 1.1 0.3 9 | -------------------------------------------------------------------------------- /data/10-donut_BloodGroupCountry.tsv: -------------------------------------------------------------------------------- 1 | Country O+ A+ B+ AB+ O- A- B- AB- Pop 2 | China 47.7 27.8 18.9 5 0.3 0.2 0.1 0 1.4B 3 | India 32.5 21.8 32.1 7.7 2 1.4 2 0.5 1.3B 4 | USA 37 36 9 3 7 6 2 1 332.6M 5 | Indonesia 36.8 25.9 28.9 8 0.2 0.1 0.2 0 267M 6 | Pakistan 26.6 21.6 34.4 9.5 2.2 1.7 3.6 0.5 233.5M 7 | Ecuador 75 14 7.1 0.5 2.4 0.7 0.3 0 16.9M 8 | Armeina 29 46 12 6 2 4 1 0.4 3M 9 | Thailand 40.8 16.9 36.8 5 0.2 0.1 0.2 0 68.9M 10 | North Korea 27.2 31.3 30.2 11.3 0.1 0.1 0.1 0 25.6M 11 | New Yealand 38 32 9 3 9 6 2 1 4.9M -------------------------------------------------------------------------------- /data/11-bubblechart_furturejobs2030.tsv: -------------------------------------------------------------------------------- 1 | Occupation pct_empl_change num_empl_change median_ann_wage categ 2 | Wind turbine service technicians 68.2 4700 56230 Other 3 | Nurse practitioners 52.2 114900 111680 Health_related 4 | Solar photovoltaic installers 52.1 6100 46470 Other 5 | Statisticians 35.4 14900 92270 Comp_math 6 | Physical therapist assistants 35.4 33200 59770 Health_related 7 | Information security analysts 33.3 47100 103590 Comp_math 8 | Home health and personal care aides 32.6 1129900 27080 Health_related 9 | Medical and health services managers 32.5 139600 104280 Health_related 10 | Data scientists and mathematical science occupations, all other 31.4 19800 98230 Comp_math 11 | Physician assistants 31 40100 115390 Health_related 12 | Epidemiologists 29.6 2300 74560 Health_related 13 | Logisticians 29.5 56400 76270 Other 14 | Speech-language pathologists 28.7 45400 80480 Health_related 15 | Animal trainers 28.5 17200 31520 Other 16 | Computer numerically controlled tool programmers 27.4 7400 57740 Comp_math 17 | Genetic counselors 26.2 600 85700 Health_related 18 | Crematory operators and personal care and service workers, all other 24.8 19900 28420 Other 19 | Operations research analysts 24.6 25600 86200 Comp_math 20 | Actuaries 24.5 6800 111030 Comp_math 21 | Health specialties teachers, post-secondary 24.3 58900 99090 Health_related 22 | Word processors and typists -36 -16300 41050 Office_and_admin 23 | Parking enforcement workers -35 -2800 42070 Other 24 | Nuclear power reactor operators -32.9 -1800 104040 Production 25 | Cutters and trimmers, hand -29.7 -2400 31630 Production 26 | Telephone operators -25.4 -1200 37710 Office_and_admin 27 | Watch and clock repairers -24.9 -700 45290 Other 28 | Door-to-door sales workers, news and street vendors, and related workers -24.1 -13000 29730 Other 29 | Switchboard operators, including answering service -22.7 -13600 31430 Office_and_admin 30 | Data entry keyers -22.5 -35600 34440 Office_and_admin 31 | Shoe machine operators and tenders -21.6 -1100 30630 Production 32 | Legal secretaries and administrative assistants -21 -33600 48980 Office_and_admin 33 | Floral designers -20.1 -8500 29140 Other 34 | Executive secretaries and executive administrative assistants -18.7 -100600 63110 Office_and_admin 35 | Manufactured building and mobile home installers -18.4 -600 35120 Other 36 | Telemarketers -18.3 -21900 27920 Other 37 | Order clerks -18.2 -24400 35590 Office_and_admin 38 | Timing device assemblers and adjusters -17.8 -200 36170 Production 39 | Print binding and finishing workers -17.5 -7300 34260 Production 40 | Prepress technicians and workers -17.1 -4800 41410 Production 41 | Tellers -16.9 -73100 32620 Office_and_admin 42 | -------------------------------------------------------------------------------- /data/15-GenzUnemnployment.tsv: -------------------------------------------------------------------------------- 1 | Country GenZ Mil 2 | Australia 14.3 5 3 | Austria 10.5 4.7 4 | Belgium 15.3 4.8 5 | Canada 20 7.9 6 | Chile 24.8 9.6 7 | Colombia 27.5 13.9 8 | Czech Republic 8 2.3 9 | Denmark 11.5 4.7 10 | Estonia 17.7 5.9 11 | Finland 21 6 12 | France 20.1 6.8 13 | Germany 6.2 4 14 | Hungary 12.4 3.5 15 | Iceland 11.9 5.5 16 | Ireland 15.2 4.4 17 | Israel 7.9 3.7 18 | Italy 29.1 19 | Japan 4.5 2.6 20 | South Korea 10.5 3.6 21 | Latvia 14.8 7.7 22 | Lithuania 19.5 7.7 23 | Luxembourg 22.4 5.6 24 | Mexico 8 3.8 25 | Netherlands 9.1 2.8 26 | New Zealand 12.4 3.3 27 | Poland 10.9 2.6 28 | Portugal 22.9 5.9 29 | Slovakia 19.3 6 30 | Slovenia 14.2 4.3 31 | Spain 38.3 14 32 | Sweden 23.8 6.4 33 | Switzerland 8.6 4.3 34 | United Kingdom 13.5 3.2 35 | United States 15.1 7.1 36 | -------------------------------------------------------------------------------- /data/17-time-spent-with-relationships-by-age-us.csv: -------------------------------------------------------------------------------- 1 | Entity,Code,Year,"Time spent alone, by age of respondent (United States)","Time spent with friends, by age of respondent (United States)","Time spent with children, by age of respondent (United States)","Time spent with with parents, siblings and other family, by age of respondent (United States)","Time spent with partner, by age of respondent (United States)","Time spent with coworkers, by age of respondent (United States)" 2 | United States,USA,15,193.30588,109.4145,23.463852,267.12091,0,8.3420067 3 | United States,USA,16,206.37056,110.7418,28.609867,254.3381,0.030690858,23.529137 4 | United States,USA,17,224.17331,120.41887,26.089708,229.81561,1.1228406,43.809685 5 | United States,USA,18,242.69839,137.75107,27.387308,236.35201,5.6972671,81.633575 6 | United States,USA,19,267.79385,129.85716,36.445004,201.2766,19.341291,124.85052 7 | United States,USA,20,277.60379,122.7402,54.630512,173.13503,26.35417,143.9003 8 | United States,USA,21,270.21817,122.40627,69.293869,152.67331,59.897781,154.20972 9 | United States,USA,22,283.56686,100.16862,72.302246,135.8266,55.767094,173.0473 10 | United States,USA,23,270.93015,101.07177,96.935883,125.79333,78.188667,190.10524 11 | United States,USA,24,265.81378,96.786346,99.394424,103.75845,99.44416,206.05486 12 | United States,USA,25,275.12906,77.543015,119.50971,101.02744,121.25083,199.20917 13 | United States,USA,26,281.63202,77.856834,128.59393,87.654915,139.91745,190.09406 14 | United States,USA,27,259.3331,74.140686,153.33383,85.956535,151.88562,211.48781 15 | United States,USA,28,261.13989,62.491688,175.83809,80.147217,168.24556,212.14497 16 | United States,USA,29,253.66589,55.084454,194.49931,81.6101,176.19919,199.11349 17 | United States,USA,30,250.02524,53.478016,199.76436,72.476334,180.02309,215.61365 18 | United States,USA,31,253.16542,50.925926,225.92371,69.526543,203.71202,199.06003 19 | United States,USA,32,255.07323,49.464462,230.71593,61.336475,192.00175,202.76134 20 | United States,USA,33,244.90091,49.731628,256.41312,66.359383,200.02365,186.96373 21 | United States,USA,34,263.59116,42.650288,261.18497,65.723053,199.23759,179.36411 22 | United States,USA,35,262.62488,41.661636,248.93806,62.107143,198.27702,190.68065 23 | United States,USA,36,273.27942,40.120937,256.59799,64.809921,197.55948,178.94667 24 | United States,USA,37,267.09787,43.362503,256.37634,56.446011,204.00514,188.47969 25 | United States,USA,38,258.99704,42.101093,254.45975,54.001514,203.30919,197.09261 26 | United States,USA,39,281.98877,33.611919,266.07874,52.701588,212.07637,172.79756 27 | United States,USA,40,278.25668,36.197014,242.43935,54.638985,201.94627,187.34126 28 | United States,USA,41,292.07227,38.729492,237.29298,55.611694,194.68652,179.37498 29 | United States,USA,42,297.90939,38.695633,222.96886,50.690075,182.25496,189.4864 30 | United States,USA,43,321.74783,39.107994,207.65651,55.288914,181.83145,169.79688 31 | United States,USA,44,312.69861,38.859802,207.01961,54.224209,191.94835,182.13411 32 | United States,USA,45,309.03583,36.090996,199.21028,58.068977,183.99062,182.52716 33 | United States,USA,46,326.78207,37.459354,177.52652,54.798512,186.65195,179.01489 34 | United States,USA,47,338.24756,39.243477,168.4313,60.089104,181.05563,171.43033 35 | United States,USA,48,332.5762,33.357357,157.297,58.556328,197.96497,170.06847 36 | United States,USA,49,339.72601,37.315029,132.68301,58.63641,194.11002,187.72957 37 | United States,USA,50,361.14328,28.917883,132.44537,65.362938,174.92821,168.1844 38 | United States,USA,51,368.59146,35.627602,123.67976,62.211754,187.80592,172.19505 39 | United States,USA,52,380.84085,33.961197,102.66885,65.243996,190.51634,176.08771 40 | United States,USA,53,372.17041,31.585169,102.3604,59.573872,188.71446,168.29805 41 | United States,USA,54,377.70459,34.837147,89.755821,60.021786,182.8898,184.43581 42 | United States,USA,55,384.14532,33.079144,88.129921,60.739655,184.38846,162.92227 43 | United States,USA,56,387.00711,36.820248,78.608688,66.083549,195.93608,154.11407 44 | United States,USA,57,399.18466,31.479084,73.898285,58.831005,185.31619,157.73422 45 | United States,USA,58,409.77731,35.2756,68.309761,65.851311,186.54398,140.36014 46 | United States,USA,59,411.51978,29.068735,70.334312,67.322807,199.87039,140.17371 47 | United States,USA,60,413.32019,35.94643,61.933525,65.528786,204.63687,125.92768 48 | United States,USA,61,414.82727,32.807606,71.07634,60.896008,205.22923,126.77782 49 | United States,USA,62,425.2204,34.453568,57.484367,56.583904,224.05167,96.651878 50 | United States,USA,63,430.51068,36.147518,62.510818,73.459251,232.44521,78.317001 51 | United States,USA,64,449.01306,35.180847,55.407318,63.962303,231.84886,78.246071 52 | United States,USA,65,444.02954,35.90049,57.586105,65.28495,242.53215,62.186493 53 | United States,USA,66,431.98727,40.828274,59.682854,69.281334,255.86,50.919098 54 | United States,USA,67,433.85413,38.98082,62.771469,58.832348,258.14743,44.558029 55 | United States,USA,68,448.22601,41.382526,53.818981,53.716782,260.36365,39.273418 56 | United States,USA,69,443.00061,42.001629,68.845222,61.424671,270.69342,27.190746 57 | United States,USA,70,448.85193,45.80217,52.782196,47.977863,261.86359,26.851473 58 | United States,USA,71,444.47784,44.433987,59.073078,58.145714,266.694,21.892221 59 | United States,USA,72,474.45526,44.234802,46.338203,57.166805,261.05215,20.653986 60 | United States,USA,73,451.40637,36.592476,56.115063,56.550076,276.13379,18.386124 61 | United States,USA,74,458.6745,40.508751,48.986588,66.20977,254.44495,14.613341 62 | United States,USA,75,463.43195,39.079994,48.644051,56.281876,252.93309,16.36656 63 | United States,USA,76,456.49493,41.503906,44.339306,51.955276,266.23712,19.662245 64 | United States,USA,77,454.3125,33.595589,46.719131,67.455605,272.73013,12.47935 65 | United States,USA,78,461.63959,39.297825,42.985035,59.704296,256.41376,3.2494414 66 | United States,USA,79,485.83075,41.975792,38.609028,51.944447,235.3701,4.5325632 67 | United States,USA,80,476.76736,35.589745,45.010258,66.100365,227.04634,5.2152042 68 | United States,USA,85,501.88327,36.37146,45.463383,65.052567,158.42017,3.5733819 -------------------------------------------------------------------------------- /data/18-cleanEnergy_manufacturer.tsv: -------------------------------------------------------------------------------- 1 | Country source element pct 2 | China OffshoreWind Tower 53 3 | AsiaPacific OffshoreWind Tower 6 4 | Europe OffshoreWind Tower 41 5 | China OffshoreWind Nacelle 73 6 | AsiaPacific OffshoreWind Nacelle 1 7 | Europe OffshoreWind Nacelle 26 8 | China OffshoreWind Blade 84 9 | AsiaPacific OffshoreWind Blade 4 10 | Europe OffshoreWind Blade 12 11 | China OnshoreWind Tower 55 12 | AsiaPacific OnshoreWind Tower 12 13 | Europe OnshoreWind Tower 16 14 | NorthAmerica OnshoreWind Tower 11 15 | Other OnshoreWind Tower 6 16 | China OnshoreWind Nacelle 62 17 | AsiaPacific OnshoreWind Nacelle 13 18 | Europe OnshoreWind Nacelle 10 19 | NorthAmerica OnshoreWind Nacelle 8 20 | Other OnshoreWind Nacelle 7 21 | China OnshoreWind Blade 61 22 | AsiaPacific OnshoreWind Blade 6 23 | Europe OnshoreWind Blade 18 24 | NorthAmerica OnshoreWind Blade 10 25 | Other OnshoreWind Blade 5 26 | China Solar Wafers 96 27 | AsiaPacific Solar Wafers 3 28 | Other Solar Wafers 1 29 | China Solar Cells 85 30 | AsiaPacific Solar Cells 13 31 | Europe Solar Cells 2 32 | China Solar Modules 75 33 | AsiaPacific Solar Modules 18 34 | Europe Solar Modules 3 35 | NorthAmerica Solar Modules 2 36 | Other Solar Modules 2 37 | China EV Cathode 68 38 | AsiaPacific EV Cathode 26 39 | Europe EV Cathode 3 40 | Other EV Cathode 3 41 | China EV Anode 86 42 | AsiaPacific EV Anode 12 43 | Europe EV Anode 2 44 | China EV Batteries 75 45 | AsiaPacific EV Batteries 11 46 | Europe EV Batteries 8 47 | Other EV Batteries 6 48 | China EV ElectricCar 54 49 | AsiaPacific EV ElectricCar 10 50 | Europe EV ElectricCar 27 51 | NorthAmerica EV ElectricCar 7 52 | Other EV ElectricCar 2 53 | China FuelCellTrucks Trucks 45 54 | AsiaPacific FuelCellTrucks Trucks 14 55 | Europe FuelCellTrucks Trucks 22 56 | NorthAmerica FuelCellTrucks Trucks 19 57 | China FuelCellTrucks PowerSystem 48 58 | AsiaPacific FuelCellTrucks PowerSystem 39 59 | NorthAmerica FuelCellTrucks PowerSystem 5 60 | Other FuelCellTrucks PowerSystem 8 61 | China HeatPumps HeatPumps 39 62 | AsiaPacific HeatPumps HeatPumps 14 63 | Europe HeatPumps HeatPumps 16 64 | NorthAmerica HeatPumps HeatPumps 29 65 | Other HeatPumps HeatPumps 2 66 | China Electrolyzers Electrolyzers 41 67 | AsiaPacific Electrolyzers Electrolyzers 14 68 | Europe Electrolyzers Electrolyzers 26 69 | NorthAmerica Electrolyzers Electrolyzers 19 70 | -------------------------------------------------------------------------------- /data/19-barcodechart_USagegroup.csv: -------------------------------------------------------------------------------- 1 | name,<10,10-19,20-29,30-39,40-49,50-59,60-69,70-79,≥80 2 | AL,598478,638789,661666,603013,625599,673864,548376,316598,174781 3 | AK,106741,99926,120674,102008,91539,104569,70473,28422,12503 4 | AZ,892083,912735,939804,857054,833290,834858,737884,466153,254716 5 | AR,392177,397185,399698,372998,370157,395070,329734,197985,113468 6 | CA,5038433,5170341,5809455,5354112,5179258,5042094,3737461,2011678,1311374 7 | CO,690830,697447,780508,766382,705450,725661,563376,274466,155175 8 | CT,399369,481065,462323,424890,496265,546361,400995,217827,159475 9 | DE,112177,117854,127554,114063,117588,133331,110822,65369,35937 10 | DC,74377,62783,136976,121520,80570,74779,56984,31362,19658 11 | FL,2211012,2331102,2597830,2416176,2575576,2762983,2404659,1615547,1019566 12 | GA,1363631,1421557,1418696,1357210,1404698,1337985,998253,528108,269182 13 | HI,176484,163559,204336,187590,176904,188438,164957,85345,66060 14 | ID,236658,239509,218684,209500,194678,205170,179429,97621,54234 15 | IL,1619682,1715984,1789739,1721954,1697069,1773366,1326121,728821,478948 16 | IN,863029,905594,905590,827086,844059,911778,704523,384788,243131 17 | IA,401712,418667,419456,383638,370719,427554,344037,197223,143583 18 | KS,401751,402092,406956,368732,344427,389834,300759,166104,117637 19 | KY,555615,575866,593819,558201,580553,623164,495736,273961,155074 20 | LA,622061,613633,683606,615411,571991,631936,488846,266123,152063 21 | ME,137954,155774,156359,147695,176908,215787,179540,97899,62007 22 | MD,741952,764730,815346,784097,815875,862778,636309,330736,208079 23 | MA,737748,862371,971340,847306,916106,979128,737805,401931,288408 24 | MI,1181424,1324071,1338179,1162186,1283122,1454462,1148131,619722,398303 25 | MN,711604,714399,728222,715583,692201,782655,577313,312906,215985 26 | MS,400288,421329,414195,374724,377165,400164,319443,181195,100689 27 | MO,763948,792935,831725,763002,750989,857534,668878,388086,242554 28 | MT,126020,126294,136346,125004,116502,149800,130977,70528,41920 29 | NE,263518,257610,260646,244236,222479,250911,195705,107650,78504 30 | NV,369362,360263,392834,390261,387272,373757,309651,173499,82273 31 | NH,138762,167495,167554,151409,182703,217950,164287,84791,52552 32 | NJ,1079136,1153625,1139927,1143452,1254602,1307263,946399,523620,367432 33 | NM,276468,282662,289801,260579,244346,280363,239044,135013,74393 34 | NY,2319945,2445591,2894266,2605355,2617327,2755620,2095207,1160055,804091 35 | NC,1250298,1310398,1350242,1268976,1357746,1356117,1095320,609234,342497 36 | ND,99477,91069,124509,94713,80327,98688,73825,41348,32206 37 | OH,1422838,1530264,1535538,1398724,1490959,1677794,1320776,728158,481890 38 | OK,534481,522282,552528,501392,469410,512850,404704,239887,138055 39 | OR,474456,485345,538596,537767,507826,534421,490894,255809,157153 40 | PA,1458931,1608018,1712448,1520409,1645291,1881378,1491536,850897,615069 41 | RI,111377,136885,153674,126503,137892,156127,117653,63359,51021 42 | SC,599591,619144,667523,596491,619792,663408,579856,322073,166727 43 | SD,120366,113383,116748,105499,96288,117012,92824,50398,38540 44 | TN,818404,842873,895337,837313,866343,904272,741045,414939,227483 45 | TX,3983091,3910528,3946447,3770534,3545746,3344930,2431494,1291486,732179 46 | UT,513515,479126,465219,436010,328569,301596,230007,123674,70711 47 | VT,63768,79351,81765,70092,79982,99521,82136,42978,26656 48 | VA,1033629,1065461,1170634,1112111,1134928,1162028,881763,475141,274606 49 | WA,895790,882812,1004428,970613,921205,970407,784208,401094,242589 50 | WV,207017,218547,232027,220494,238218,269346,243108,138134,79201 51 | WI,705648,755224,760961,714479,732280,848672,645015,350772,241747 52 | WY,78217,75535,82898,76912,68464,81018,67484,32819,19682 53 | PR,389428,479749,480184,441842,456009,452503,411924,268783,148963 -------------------------------------------------------------------------------- /data/21-top_gold_mining_stocks.tsv: -------------------------------------------------------------------------------- 1 | Company Performance Market_cap 2 | Newmont 37.8 48.2 3 | Barrick 22.5 39.8 4 | Franco Nevada 21.3 23.6 5 | Agnico Eagle 14.5 17.5 6 | Wheaton 40.3 18.6 7 | Newcrest -14.8 15.9 8 | Kirkland Lake Gold -6.4 10.4 9 | Northern Star 12.2 6.9 10 | AngloGold Ashanti 1.3 9.8 11 | Kinross 54.9 9.2 12 | -------------------------------------------------------------------------------- /data/22-median_2022_student_debt.tsv: -------------------------------------------------------------------------------- 1 | degree Major Study median_debt 2 | bachelors Behavioral Sciences Social Sciences 42.8 3 | bachelors Religious Education Arts and Humanities 32 4 | bachelors "Culinary Arts and 5 | Related Services" Arts and Humanities 28.6 6 | bachelors Human Services Social Sciences 28.6 7 | bachelors Education Other 28 8 | bachelors "Clinical, Counseling, and 9 | Applied Psychology" Health and Medicine 27.4 10 | bachelors Literature Arts and Humanities 27 11 | bachelors Natural Sciences Sciences 26.9 12 | bachelors Physical Sciences Sciences 26.6 13 | bachelors Music Arts and Humanities 26.6 14 | bachelors Architecture Arts and Humanities 26.5 15 | bachelors "Arts, Entertainment, and 16 | Media Management" Arts and Humanities 26.5 17 | bachelors Visual and Performing Arts Arts and Humanities 26.5 18 | bachelors "Health Professions and 19 | Related Clinical Sciences" Health and Medicine 26 20 | bachelors "Communication, Journalism, and 21 | Related Programs" Other 25.9 22 | bachelors "Drama/ Theater Arts 23 | and Stagecraft" Arts and Humanities 25.8 24 | bachelors Astronomy and Astrophysics Sciences 25.6 25 | bachelors Engineering, General Engineering 25.5 26 | bachelors Multi-/Interdisciplinary Studies Other 25.4 27 | bachelors "Aerospace, Aeronautical, 28 | and Astronautical Engineering" Engineering 25.2 29 | bachelors Biological and Physical Sciences Sciences 25.2 30 | bachelors "Foods, Nutrition, and 31 | Related Services" Health and Medicine 25.2 32 | bachelors Biochemical Engineering Engineering 25.1 33 | bachelors Information Science/Studies Sciences 25.1 34 | bachelors "Film/Video and 35 | Photographic Arts" Arts and Humanities 25 36 | bachelors Social Work Health and Medicine 24.9 37 | bachelors Zoology/Animal Biology Sciences 24.7 38 | bachelors Civil Engineering Engineering 24.6 39 | bachelors "City/Urban, Community, 40 | and Regional Planning" Social Sciences 24.5 41 | bachelors Criminal Justice and Corrections Social Sciences 24.5 42 | bachelors Mechanical Engineering Engineering 24.5 43 | bachelors "Radio, Television, and 44 | Digital Communication" Other 24.4 45 | bachelors "Business Administration, Management, 46 | and Operations" Other 24.4 47 | bachelors "Health and 48 | Physical Education/ Fitness" Health and Medicine 24.2 49 | bachelors Accounting Other 24.1 50 | bachelors Computer & Information Sciences Sciences 24 51 | bachelors "Public Relations, Advertising, 52 | and Applied Communication" Other 23.9 53 | bachelors Chemical Engineering Engineering 23.8 54 | bachelors Biology Sciences 23.7 55 | bachelors Journalism Other 23.4 56 | bachelors Criminology Social Sciences 23.4 57 | bachelors "Liberal Arts and Sciences, 58 | General Studies and Humanities" Social Sciences 23.3 59 | bachelors Botany/Plant Biology Sciences 23.3 60 | bachelors Psychology Social Sciences 23.3 61 | bachelors Public Health Health and Medicine 23.1 62 | bachelors Archeology Social Sciences 23 63 | bachelors "Communication and 64 | Media Studies" Other 22.8 65 | bachelors Social Sciences Social Sciences 22.8 66 | bachelors Chemistry Sciences 22.8 67 | bachelors Hospitality Administration/Management Health and Medicine 22.8 68 | bachelors Physics Sciences 22.8 69 | bachelors History Social Sciences 22.8 70 | bachelors "Registered Nursing, Nursing Administration, 71 | Nursing Research, and Clinical Nursing" Health and Medicine 22.6 72 | bachelors English Language and Literature Arts and Humanities 22.5 73 | bachelors Sociology Social Sciences 22.3 74 | bachelors Computer Science Sciences 22.3 75 | bachelors Marine Sciences Sciences 22.2 76 | bachelors Political Science and Government Social Sciences 22 77 | bachelors "Science, Technology, and 78 | Society" Sciences 21.8 79 | bachelors Mathematics Sciences 21.8 80 | bachelors Geography and Cartography Social Sciences 21.7 81 | bachelors Anthropology Social Sciences 21.7 82 | bachelors Animal Sciences Sciences 21.6 83 | bachelors Environmental Design Social Sciences 21.2 84 | bachelors Agricultural Sciences 20.8 85 | bachelors Economics Other 20.7 86 | bachelors Statistics Other 20.6 87 | bachelors Public Administration Social Sciences 20.6 88 | bachelors Philosophy Social Sciences 20.6 89 | bachelors International/Global Studies Other 19.9 90 | bachelors "Business Operations Support and 91 | Assistant Services" Other 19.1 92 | bachelors Cognitive Science Sciences 18.1 93 | bachelors "International and 94 | Comparative Education" Other 13 95 | masters "Advanced/Graduate Dentistry 96 | and Oral Sciences" Health and Medicine 158155 97 | masters Visual and Performing Arts Arts and Humanities 63830 98 | masters "Radio, Television, and 99 | Digital Communication" Other 55554 100 | masters Social Sciences Social Sciences 54554 101 | masters Philosophy Social Sciences 54260 102 | masters Journalism Other 53213 103 | masters Statistics Other 53174 104 | masters "Clinical, Counseling, and 105 | Applied Psychology" Health and Medicine 51888 106 | masters "Registered Nursing, Nursing Administration, 107 | Nursing Research, and Clinical Nursing" Health and Medicine 51420 108 | masters Multi/Interdisciplinary Studies Other 48693 109 | masters "Public Relations, Advertising, and 110 | Applied Communication" Other 48366 111 | masters Sociology Social Sciences 46871 112 | masters "Health Professions and 113 | Related Clinical Sciences" Health and Medicine 44598 114 | masters English Language and Literature Arts and Humanities 44301 115 | masters Political Science and Government Social Sciences 43853 116 | masters "Liberal Arts and Sciences, General Studies 117 | and Humanities" Social Sciences 43408 118 | masters "Finance and 119 | Financial Management Services" Other 43408 120 | masters Psychology Social Sciences 43408 121 | masters "Business Administration, Management, 122 | and Operations" Other 43251 123 | masters Economics Other 43053 124 | masters Literature Arts and Humanities 42826 125 | masters Computer Engineering Engineering 42647 126 | masters Public Administration Social Sciences 42154 127 | masters "Arts, Entertainment, 128 | and Media Management" Arts and Humanities 41238 129 | masters History Social Sciences 40948 130 | masters Computer & Information Sciences Sciences 40579 131 | masters Anthropology Social Sciences 40428 132 | masters Biology Sciences 40265 133 | masters Architecture Arts and Humanities 39788 134 | masters Communication and Media Studies Other 39270 135 | masters International/Global Studies Other 37180 136 | masters Zoology/Animal Biology Sciences 37056 137 | masters Hospitality Administration/Management Other 36203 138 | masters Marketing Other 35738 139 | masters Criminology Social Sciences 35318 140 | masters Computer Science Sciences 35301 141 | masters Engineering Engineering 33235 142 | masters Health and Physical Education/Fitness Health and Medicine 32372 143 | masters Agriculture Sciences 30676 144 | masters Geography and Cartography Social Sciences 30657 145 | masters Education Other 29434 146 | masters Chemistry Sciences 28912 147 | masters Accounting Other 28212 148 | masters Mechanical Engineering Engineering 26775 149 | masters Civil Engineering Engineering 26180 150 | masters International Agriculture Sciences 23275 151 | -------------------------------------------------------------------------------- /data/23-marvel_boxoffocie.tsv: -------------------------------------------------------------------------------- 1 | Release_Date Film Production_Budget Opening_WeekendDomestic Box_OfficeWorldwide Review_ScoreRotten_Tomatoes phase 2 | May 02, 2008 Iron Man 186 102 585 94 1 3 | Jun. 13, 2008 The Incredible Hulk 138 55 266 67 1 4 | May 07, 2010 Iron Man 2 170 128 621 72 1 5 | May 06, 2011 Thor 150 66 449 77 1 6 | Jul. 22, 2011 Captain America: The First Avenger 140 65 371 80 1 7 | May 04, 2012 The Avengers 225 207 1515 91 1 8 | May 03, 2013 Iron Man 3 200 174 1215 79 2 9 | Nov. 08, 2013 Thor: The Dark World 150 86 645 67 2 10 | Apr. 04, 2014 Captain America: The Winter Soldier 170 95 714 90 2 11 | Aug. 01, 2014 Guardians of the Galaxy 170 94 771 92 2 12 | May 01, 2015 Avengers: Age of Ultron 365 191 1395 76 2 13 | Jul. 17, 2015 Ant-Man 130 57 519 83 2 14 | May 06, 2016 Captain America: Civil War 250 179 1152 91 3 15 | Nov. 04, 2016 Doctor Strange 165 85 676 89 3 16 | May 05, 2017 Guardians of the Galaxy Vol 2 200 147 869 85 3 17 | Jul. 07, 2017 Spider-Man: Homecoming 175 117 878 92 3 18 | Nov. 03, 2017 Thor: Ragnarok 180 123 850 93 3 19 | Feb. 16, 2018 Black Panther 200 202 1336 96 3 20 | Apr. 27, 2018 Avengers: Infinity War 300 258 2048 85 3 21 | Jul. 06, 2018 Ant-Man and the Wasp 130 76 623 87 3 22 | Mar. 08, 2019 Captain Marvel 175 153 1130 79 3 23 | Apr. 26, 2019 Avengers: Endgame 400 357 2789 94 3 24 | Jul. 02, 2019 Spider-Man: Far From Home 160 93 1132 90 3 25 | Jul. 09, 2021 Black Widow 200 80 380 79 4 26 | Sep. 03, 2021 Shang-Chi and the Legend of the Ten Rings 150 75 432 92 4 27 | Nov. 05, 2021 Eternals 200 71 402 47 4 28 | Dec. 17, 2021 Spider-Man: No Way Home 200 260 1908 93 4 29 | May 06, 2022 Doctor Strange in the Multiverse of Madness 200 187 952 73 4 30 | Jul. 08, 2022 Thor: Love and Thunder 250 144 761 63 4 31 | Nov. 11, 2022 Black Panther: Wakanda Forever 250 181 854 83 4 32 | Feb. 17, 2023 Ant-Man and the Wasp: Quantumania 200 106 464 46 5 33 | May 05, 2023 Guardians of the Galaxy Vol 3 250 118 845 82 5 34 | Nov. 10, 2023 The Marvels 275 46 61 5 35 | -------------------------------------------------------------------------------- /data/24-data_cost.tsv: -------------------------------------------------------------------------------- 1 | country cost_per_g 2 | Switzerland 7.29 3 | USA 6 4 | NZ 5.89 5 | Canada 5.37 6 | South 5.01 7 | United 4.6 8 | Norway 4.07 9 | Japan 3.48 10 | Czechia 3.12 11 | Greece 2.79 12 | Worldwide 2.59 13 | Sweden 2.33 14 | Belgium 2.23 15 | Germany 2.14 16 | Mexico 1.8 17 | South Africa 1.77 18 | Portugal 1.71 19 | Hungary 1.61 20 | Netherlands 1.61 21 | Saudi 1.49 22 | Croatia 1.19 23 | Argentina 0.98 24 | Hong Kong 0.92 25 | Taiwan 0.82 26 | Denmark 0.69 27 | Egypt 0.66 28 | Chile 0.63 29 | Morocco 0.63 30 | Singapore 0.63 31 | UK 0.62 32 | Kenya 0.59 33 | Philippines 0.59 34 | Romania 0.54 35 | Austria 0.51 36 | Spain 0.48 37 | Australia 0.44 38 | Turkey 0.41 39 | Thailand 0.4 40 | Ghana 0.4 41 | Brazil 0.38 42 | Nigeria 0.38 43 | China 0.37 44 | Poland 0.28 45 | Vietnam 0.28 46 | Malaysia 0.28 47 | Indonesia 0.28 48 | Russia 0.25 49 | Colombia 0.2 50 | France 0.16 51 | India 0.09 52 | Italy 0.09 53 | Israel 0.02 54 | -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | # Data 2 | 3 | Save raw data files here. 4 | -------------------------------------------------------------------------------- /data/data.csv: -------------------------------------------------------------------------------- 1 | Hugo_Symbol,samples 2 | TP53,3851 3 | PIK3CA,1396 4 | CSMD3,1351 5 | RYR2,1305 6 | ZFHX4,1039 7 | SPTA1,930 8 | PTEN,870 9 | PCDH15,830 10 | ARID1A,816 11 | APC,815 12 | KRAS,776 13 | BRAF,770 14 | DMD,749 15 | CSMD2,743 16 | COL11A1,700 17 | RELN,692 18 | HYDIN,684 19 | ANK2,674 20 | NAV3,661 21 | FAM135B,651 22 | ATRX,648 23 | CACNA1E,647 24 | PAPPA2,632 25 | NF1,628 26 | SI,626 27 | TENM1,621 28 | HUWE1,615 29 | RP1,613 30 | GPR112,606 31 | MXRA5,606 32 | KIAA1109,595 33 | UNC13C,585 34 | BIRC6,574 35 | THSD7B,571 36 | COL22A1,564 37 | DCHS2,561 38 | ATM,560 39 | FBN2,559 40 | FMN2,559 41 | DSCAM,558 42 | IDH1,553 43 | CNTNAP5,551 44 | ZNF536,549 45 | PEG3,545 46 | C1orf173,541 47 | TENM3,539 48 | PRKDC,539 49 | VCAN,537 50 | SVEP1,536 51 | COL12A1,535 52 | MGAM,534 53 | MYH2,534 54 | SPHKAP,532 55 | FLG2,530 56 | MYCBP2,526 57 | LRRK2,526 58 | CNTNAP2,525 59 | MROH2B,524 60 | PTPRT,523 61 | NRXN1,522 62 | DCC,520 63 | BAI3,518 64 | PTPRD,515 65 | NBEA,515 66 | PRUNE2,512 67 | PXDNL,510 68 | MUC4,508 69 | SDK1,508 70 | MYH1,508 71 | TRRAP,507 72 | ASXL3,505 73 | PLXNA4,503 74 | ADAMTS12,501 75 | TPTE,501 76 | CDH10,501 77 | FLNC,498 78 | UNC79,497 79 | ABCA12,495 80 | COL6A6,493 81 | SCN1A,493 82 | NPAP1,492 83 | AKAP9,492 84 | TNR,487 85 | MYO18B,486 86 | KMT2A,485 87 | PRDM9,483 88 | PCDH11X,482 89 | GRIN2A,481 90 | RIMS2,480 91 | LRRC7,479 92 | NALCN,479 93 | DYNC1H1,477 94 | WDFY3,477 95 | MYH8,475 96 | CREBBP,474 97 | ZNF804A,474 98 | TAF1L,473 99 | HERC1,471 100 | SCN10A,471 101 | ANKRD30A,469 102 | -------------------------------------------------------------------------------- /data/rangeplot_data.csv: -------------------------------------------------------------------------------- 1 | category,Vote for Clinton,Vote for Trump,group 2 | 18-29,58,28,Age 3 | 30-49,51,40,Age 4 | 50-64,45,51,Age 5 | 65+,44,53,Age 6 | Postgrad,66,29,Education 7 | 4-year college grad,52,41,Education 8 | Some college,42,49,Education 9 | HS or less,44,51,Education 10 | Men,41,52,Gender 11 | Women,54,39,Gender 12 | White,39,54,Race/Ethnicity 13 | Black,91,6,Race/Ethnicity 14 | Hispanic,66,28,Race/Ethnicity 15 | Other,59,32,Race/Ethnicity -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/.nojekyll -------------------------------------------------------------------------------- /docs/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | About 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 43 | 44 | 45 | 46 | 54 | 55 | 56 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 102 | 103 | 104 | 143 | 144 | 174 | 175 | 176 | 177 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 |
242 | 243 | 244 | 245 | 246 | 274 | 275 | 282 | 283 | 284 |

285 | 290 |

291 |
292 | 305 |
306 |
307 |

308 | Last updated: 2022-07-16 309 |

310 |

311 | Checks: 2 313 | 0 315 |

316 |

317 | Knit directory: basegraphics/ 321 |

322 |

323 | This reproducible R Markdown 324 | analysis was created with workflowr (version 326 | 1.7.0). The Checks tab describes the reproducibility checks 327 | that were applied when the results were created. The Past 328 | versions tab lists the development history. 329 |

330 |
331 |
332 |
333 |
334 |
335 | 343 |
345 |
346 |

Great! Since the R Markdown file has been committed to the Git 347 | repository, you know the exact version of the code that produced these 348 | results.

349 |
350 |
351 |
352 |
353 |
354 |

355 | 356 | Repository version: 358 | 4cd02d0 359 | 360 |

361 |
362 |
365 |
366 |

367 | Great! You are using Git for version control. Tracking code development 368 | and connecting the code version to the results is critical for 369 | reproducibility. 370 |

371 |

372 | The results in this page were generated with repository version 373 | 4cd02d0. 374 | See the Past versions tab to see a history of the changes made 375 | to the R Markdown and HTML files. 376 |

377 |

378 | Note that you need to be careful to ensure that all relevant files for 379 | the analysis have been committed to Git prior to generating the results 380 | (you can use wflow_publish or 381 | wflow_git_commit). workflowr only checks the R Markdown 382 | file, but you know if there are other scripts or data files that it 383 | depends on. Below is the status of the Git repository when the results 384 | were generated: 385 |

386 |

387 | Ignored files:
388 |     Ignored:    .DS_Store
389 |     Ignored:    .Rhistory
390 |     Ignored:    .Rproj.user/
391 |     Ignored:    code/.DS_Store
392 | 
393 | Untracked files:
394 |     Untracked:  .Rbuildignore
395 |     Untracked:  LICENSE.md
396 |     Untracked:  code/01-animate_covid-biorxiv.R
397 |     Untracked:  code/01-barplot_BechdelTest.R
398 |     Untracked:  code/02-splitbarplot_PopGermany.R
399 |     Untracked:  code/03-dotplot_OldestCountry.R
400 |     Untracked:  code/04-arrowplot_WomenInParliment.R
401 |     Untracked:  code/05-linechart_COVIDrXiv.R
402 |     Untracked:  code/05-linechart_CigConsumption.R
403 |     Untracked:  code/06-scatterplot_RichGDP.R
404 |     Untracked:  code/07-areachart_USmigration.R
405 |     Untracked:  code/08-donutplot_TopWealth.R
406 | 
407 | 
408 |

409 | Note that any generated files, e.g. HTML, png, CSS, etc., are not 410 | included in this status report because it is ok for generated content to 411 | have uncommitted changes. 412 |

413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 | 421 |

422 | These are the previous versions of the repository in which changes were 423 | made to the R Markdown (analysis/about.Rmd) and HTML 424 | (docs/about.html) files. If you’ve configured a remote Git 425 | repository (see ?wflow_git_remote), click on the hyperlinks 426 | in the table below to view the files as they were in that past version. 427 |

428 |
429 | 430 | 431 | 432 | 435 | 438 | 441 | 444 | 447 | 448 | 449 | 450 | 451 | 454 | 457 | 460 | 463 | 466 | 467 | 468 | 471 | 474 | 477 | 480 | 483 | 484 | 485 |
433 | File 434 | 436 | Version 437 | 439 | Author 440 | 442 | Date 443 | 445 | Message 446 |
452 | Rmd 453 | 455 | 4cd02d0 456 | 458 | PoisonAlien 459 | 461 | 2022-07-16 462 | 464 | workflowr 465 |
469 | Rmd 470 | 472 | 73c7933 473 | 475 | PoisonAlien 476 | 478 | 2022-07-15 479 | 481 | Start workflowr project. 482 |
486 |
487 |
488 |
489 |
490 |
491 |

Do you like #Rstats and #Datavisualization? 492 | This repository demonstrates base R to crate plots generated using base 493 | graphics with no dependencies.

494 |

This is for those who like to learn and customize base R plotting 495 | functions. #BaseisBeautiful :)

496 |

This repository is maintained by Anand Mayakonda

498 | 499 | 500 | 506 | 511 | 512 | 513 | 514 | 515 | 516 |
517 | 518 | 530 | 531 | 532 | 533 | 544 | 545 | 546 | 547 | 548 | 549 | 557 | 558 | 559 | 560 | -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/Bechdel_test-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/Bechdel_test-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/DE_parliment-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/DE_parliment-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/US_age_group-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/US_age_group-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/US_migration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/US_migration-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/berlin_marathon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/berlin_marathon-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/blood_groups-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/blood_groups-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/cal_fires-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/cal_fires-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/cig_consumption-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/cig_consumption-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/covi_rxiv-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/covi_rxiv-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/g7vsbrics-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/g7vsbrics-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/goldstocks-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/goldstocks-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/jobs-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/jobs-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/measles-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/measles-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/oldest_country-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/oldest_country-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/pop_pyramid-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/pop_pyramid-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/rich_health-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/rich_health-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/stdentdebt-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/stdentdebt-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/timespent-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/timespent-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/top_wealth-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/top_wealth-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/unnamed-chunk-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/unnamed-chunk-1-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/unnamed-chunk-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/unnamed-chunk-2-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/unnamed-chunk-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/unnamed-chunk-3-1.png -------------------------------------------------------------------------------- /docs/figure/baseplots.Rmd/women_parl-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/figure/baseplots.Rmd/women_parl-1.png -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/Lato.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/Lato.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/LatoBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/LatoBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/LatoItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/LatoItalic.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/NewsCycle.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/NewsCycle.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/NewsCycleBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/NewsCycleBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSans.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansBoldItalic.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansItalic.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLight.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/OpenSansLightItalic.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/Raleway.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/Raleway.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/RalewayBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/RalewayBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/Roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/Roboto.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoLight.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoMedium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/RobotoMedium.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansPro.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansPro.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProBold.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProItalic.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/SourceSansProLight.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/css/fonts/Ubuntu.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/css/fonts/Ubuntu.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/bootstrap-3.3.5/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/shim/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | // Only run this code in IE 8 5 | if (!!window.navigator.userAgent.match("MSIE 8")) { 6 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); 7 | }; 8 | -------------------------------------------------------------------------------- /docs/site_libs/bootstrap-3.3.5/shim/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 3 | * */ 4 | 5 | // Only run this code in IE 8 6 | if (!!window.navigator.userAgent.match("MSIE 8")) { 7 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/site_libs/header-attrs-2.15/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/site_libs/header-attrs-2.17/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/site_libs/header-attrs-2.20/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/site_libs/header-attrs-2.21/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /docs/site_libs/highlightjs-9.12.0/default.css: -------------------------------------------------------------------------------- 1 | .hljs-literal { 2 | color: #990073; 3 | } 4 | 5 | .hljs-number { 6 | color: #099; 7 | } 8 | 9 | .hljs-comment { 10 | color: #998; 11 | font-style: italic; 12 | } 13 | 14 | .hljs-keyword { 15 | color: #900; 16 | font-weight: bold; 17 | } 18 | 19 | .hljs-string { 20 | color: #d14; 21 | } 22 | -------------------------------------------------------------------------------- /docs/site_libs/highlightjs-9.12.0/textmate.css: -------------------------------------------------------------------------------- 1 | .hljs-literal { 2 | color: rgb(88, 72, 246); 3 | } 4 | 5 | .hljs-number { 6 | color: rgb(0, 0, 205); 7 | } 8 | 9 | .hljs-comment { 10 | color: rgb(76, 136, 107); 11 | } 12 | 13 | .hljs-keyword { 14 | color: rgb(0, 0, 255); 15 | } 16 | 17 | .hljs-string { 18 | color: rgb(3, 106, 7); 19 | } 20 | -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/README: -------------------------------------------------------------------------------- 1 | This a jQuery UI custom build, downloaded from: 2 | http://jqueryui.com/download/#!version=1.11.4&components=1111111111110111111111111111111111111 3 | 4 | It includes all components except the datepicker, because it conflicts with 5 | bootstrap-datepicker that is packaged with Shiny. 6 | 7 | The copy of jQuery that is bundled with the download, under external/, is not 8 | included because Shiny already has its own copy of jQuery. 9 | -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/docs/site_libs/jqueryui-1.11.4/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/jquery-ui.structure.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.11.4 - 2016-01-05 2 | * http://jqueryui.com 3 | * Copyright jQuery Foundation and other contributors; Licensed MIT */ 4 | 5 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px} -------------------------------------------------------------------------------- /docs/site_libs/jqueryui-1.11.4/jquery-ui.theme.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.11.4 - 2016-01-05 2 | * http://jqueryui.com 3 | * Copyright jQuery Foundation and other contributors; Licensed MIT */ 4 | 5 | .ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} -------------------------------------------------------------------------------- /docs/site_libs/navigation-1.1/codefolding-lua.css: -------------------------------------------------------------------------------- 1 | detaiks.chunk-details > summary.chunk-summary { 2 | text-align: right; 3 | } 4 | details.chunk-details[open] > summary.chunk-summary::after { 5 | content: "Hide"; 6 | } 7 | details.chunk-details[open] > summary.chunk-summary > span.chunk-summary-text { 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /docs/site_libs/navigation-1.1/codefolding.js: -------------------------------------------------------------------------------- 1 | 2 | window.initializeCodeFolding = function(show) { 3 | 4 | // handlers for show-all and hide all 5 | $("#rmd-show-all-code").click(function() { 6 | $('div.r-code-collapse').each(function() { 7 | $(this).collapse('show'); 8 | }); 9 | }); 10 | $("#rmd-hide-all-code").click(function() { 11 | $('div.r-code-collapse').each(function() { 12 | $(this).collapse('hide'); 13 | }); 14 | }); 15 | 16 | // index for unique code element ids 17 | var currentIndex = 1; 18 | 19 | // select all R code blocks 20 | var rCodeBlocks = $('pre.r, pre.python, pre.bash, pre.sql, pre.cpp, pre.stan, pre.julia, pre.foldable'); 21 | rCodeBlocks.each(function() { 22 | // skip if the block has fold-none class 23 | if ($(this).hasClass('fold-none')) return; 24 | 25 | // create a collapsable div to wrap the code in 26 | var div = $('
'); 27 | var showThis = (show || $(this).hasClass('fold-show')) && !$(this).hasClass('fold-hide'); 28 | var id = 'rcode-643E0F36' + currentIndex++; 29 | div.attr('id', id); 30 | $(this).before(div); 31 | $(this).detach().appendTo(div); 32 | 33 | // add a show code button right above 34 | var showCodeText = $('' + (showThis ? 'Hide' : 'Code') + ''); 35 | var showCodeButton = $(''); 36 | showCodeButton.append(showCodeText); 37 | showCodeButton 38 | .attr('data-toggle', 'collapse') 39 | .attr('data-bs-toggle', 'collapse') // BS5 40 | .attr('data-target', '#' + id) 41 | .attr('data-bs-target', '#' + id) // BS5 42 | .attr('aria-expanded', showThis) 43 | .attr('aria-controls', id); 44 | 45 | var buttonRow = $('
'); 46 | var buttonCol = $('
'); 47 | 48 | buttonCol.append(showCodeButton); 49 | buttonRow.append(buttonCol); 50 | 51 | div.before(buttonRow); 52 | 53 | // show the div if necessary 54 | if (showThis) div.collapse('show'); 55 | 56 | // update state of button on show/hide 57 | // * Change text 58 | // * add a class for intermediate states styling 59 | div.on('hide.bs.collapse', function () { 60 | showCodeText.text('Code'); 61 | showCodeButton.addClass('btn-collapsing'); 62 | }); 63 | div.on('hidden.bs.collapse', function () { 64 | showCodeButton.removeClass('btn-collapsing'); 65 | }); 66 | div.on('show.bs.collapse', function () { 67 | showCodeText.text('Hide'); 68 | showCodeButton.addClass('btn-expanding'); 69 | }); 70 | div.on('shown.bs.collapse', function () { 71 | showCodeButton.removeClass('btn-expanding'); 72 | }); 73 | 74 | }); 75 | 76 | } 77 | -------------------------------------------------------------------------------- /docs/site_libs/navigation-1.1/sourceembed.js: -------------------------------------------------------------------------------- 1 | 2 | window.initializeSourceEmbed = function(filename) { 3 | $("#rmd-download-source").click(function() { 4 | var src = $("#rmd-source-code").html(); 5 | var a = document.createElement('a'); 6 | a.href = "data:text/x-r-markdown;base64," + src; 7 | a.download = filename; 8 | document.body.appendChild(a); 9 | a.click(); 10 | document.body.removeChild(a); 11 | }); 12 | }; 13 | -------------------------------------------------------------------------------- /docs/site_libs/navigation-1.1/tabsets.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | /** 4 | * jQuery Plugin: Sticky Tabs 5 | * 6 | * @author Aidan Lister 7 | * adapted by Ruben Arslan to activate parent tabs too 8 | * http://www.aidanlister.com/2014/03/persisting-the-tab-state-in-bootstrap/ 9 | */ 10 | (function($) { 11 | "use strict"; 12 | $.fn.rmarkdownStickyTabs = function() { 13 | var context = this; 14 | // Show the tab corresponding with the hash in the URL, or the first tab 15 | var showStuffFromHash = function() { 16 | var hash = window.location.hash; 17 | var selector = hash ? 'a[href="' + hash + '"]' : 'li.active > a'; 18 | var $selector = $(selector, context); 19 | if($selector.data('toggle') === "tab") { 20 | $selector.tab('show'); 21 | // walk up the ancestors of this element, show any hidden tabs 22 | $selector.parents('.section.tabset').each(function(i, elm) { 23 | var link = $('a[href="#' + $(elm).attr('id') + '"]'); 24 | if(link.data('toggle') === "tab") { 25 | link.tab("show"); 26 | } 27 | }); 28 | } 29 | }; 30 | 31 | 32 | // Set the correct tab when the page loads 33 | showStuffFromHash(context); 34 | 35 | // Set the correct tab when a user uses their back/forward button 36 | $(window).on('hashchange', function() { 37 | showStuffFromHash(context); 38 | }); 39 | 40 | // Change the URL when tabs are clicked 41 | $('a', context).on('click', function(e) { 42 | history.pushState(null, null, this.href); 43 | showStuffFromHash(context); 44 | }); 45 | 46 | return this; 47 | }; 48 | }(jQuery)); 49 | 50 | window.buildTabsets = function(tocID) { 51 | 52 | // build a tabset from a section div with the .tabset class 53 | function buildTabset(tabset) { 54 | 55 | // check for fade and pills options 56 | var fade = tabset.hasClass("tabset-fade"); 57 | var pills = tabset.hasClass("tabset-pills"); 58 | var navClass = pills ? "nav-pills" : "nav-tabs"; 59 | 60 | // determine the heading level of the tabset and tabs 61 | var match = tabset.attr('class').match(/level(\d) /); 62 | if (match === null) 63 | return; 64 | var tabsetLevel = Number(match[1]); 65 | var tabLevel = tabsetLevel + 1; 66 | 67 | // find all subheadings immediately below 68 | var tabs = tabset.find("div.section.level" + tabLevel); 69 | if (!tabs.length) 70 | return; 71 | 72 | // create tablist and tab-content elements 73 | var tabList = $(''); 74 | $(tabs[0]).before(tabList); 75 | var tabContent = $('
'); 76 | $(tabs[0]).before(tabContent); 77 | 78 | // build the tabset 79 | var activeTab = 0; 80 | tabs.each(function(i) { 81 | 82 | // get the tab div 83 | var tab = $(tabs[i]); 84 | 85 | // get the id then sanitize it for use with bootstrap tabs 86 | var id = tab.attr('id'); 87 | 88 | // see if this is marked as the active tab 89 | if (tab.hasClass('active')) 90 | activeTab = i; 91 | 92 | // remove any table of contents entries associated with 93 | // this ID (since we'll be removing the heading element) 94 | $("div#" + tocID + " li a[href='#" + id + "']").parent().remove(); 95 | 96 | // sanitize the id for use with bootstrap tabs 97 | id = id.replace(/[.\/?&!#<>]/g, '').replace(/\s/g, '_'); 98 | tab.attr('id', id); 99 | 100 | // get the heading element within it, grab it's text, then remove it 101 | var heading = tab.find('h' + tabLevel + ':first'); 102 | var headingText = heading.html(); 103 | heading.remove(); 104 | 105 | // build and append the tab list item 106 | var a = $('' + headingText + ''); 107 | a.attr('href', '#' + id); 108 | a.attr('aria-controls', id); 109 | var li = $('
  • '); 110 | li.append(a); 111 | tabList.append(li); 112 | 113 | // set it's attributes 114 | tab.attr('role', 'tabpanel'); 115 | tab.addClass('tab-pane'); 116 | tab.addClass('tabbed-pane'); 117 | if (fade) 118 | tab.addClass('fade'); 119 | 120 | // move it into the tab content div 121 | tab.detach().appendTo(tabContent); 122 | }); 123 | 124 | // set active tab 125 | $(tabList.children('li')[activeTab]).addClass('active'); 126 | var active = $(tabContent.children('div.section')[activeTab]); 127 | active.addClass('active'); 128 | if (fade) 129 | active.addClass('in'); 130 | 131 | if (tabset.hasClass("tabset-sticky")) 132 | tabset.rmarkdownStickyTabs(); 133 | } 134 | 135 | // convert section divs with the .tabset class to tabsets 136 | var tabsets = $("div.section.tabset"); 137 | tabsets.each(function(i) { 138 | buildTabset($(tabsets[i])); 139 | }); 140 | }; 141 | 142 | -------------------------------------------------------------------------------- /docs/site_libs/tocify-1.9.1/jquery.tocify.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jquery.tocify.css 1.9.1 3 | * Author: @gregfranko 4 | */ 5 | 6 | /* The Table of Contents container element */ 7 | .tocify { 8 | width: 20%; 9 | max-height: 90%; 10 | overflow: auto; 11 | margin-left: 2%; 12 | position: fixed; 13 | border: 1px solid #ccc; 14 | border-radius: 6px; 15 | } 16 | 17 | /* The Table of Contents is composed of multiple nested unordered lists. These styles remove the default styling of an unordered list because it is ugly. */ 18 | .tocify ul, .tocify li { 19 | list-style: none; 20 | margin: 0; 21 | padding: 0; 22 | border: none; 23 | line-height: 30px; 24 | } 25 | 26 | /* Top level header elements */ 27 | .tocify-header { 28 | text-indent: 10px; 29 | } 30 | 31 | /* Top level subheader elements. These are the first nested items underneath a header element. */ 32 | .tocify-subheader { 33 | text-indent: 20px; 34 | display: none; 35 | } 36 | 37 | /* Makes the font smaller for all subheader elements. */ 38 | .tocify-subheader li { 39 | font-size: 12px; 40 | } 41 | 42 | /* Further indents second level subheader elements. */ 43 | .tocify-subheader .tocify-subheader { 44 | text-indent: 30px; 45 | } 46 | .tocify-subheader .tocify-subheader .tocify-subheader { 47 | text-indent: 40px; 48 | } 49 | .tocify-subheader .tocify-subheader .tocify-subheader .tocify-subheader { 50 | text-indent: 50px; 51 | } 52 | .tocify-subheader .tocify-subheader .tocify-subheader .tocify-subheader .tocify-subheader { 53 | text-indent: 60px; 54 | } 55 | 56 | /* Twitter Bootstrap Override Style */ 57 | .tocify .tocify-item > a, .tocify .nav-list .nav-header { 58 | margin: 0px; 59 | } 60 | 61 | /* Twitter Bootstrap Override Styles */ 62 | .tocify .tocify-item a, .tocify .list-group-item { 63 | padding: 5px; 64 | } 65 | 66 | .tocify .nav-pills > li { 67 | float: none; 68 | } 69 | 70 | /* We don't override the bootstrap colors because this gives us the 71 | wrong selection colors when using bootstrap themes 72 | 73 | .tocify .list-group-item:hover, .tocify .list-group-item:focus { 74 | background-color: #f5f5f5; 75 | } 76 | 77 | .tocify .list-group-item.active:hover, .tocify .list-group-item.active:focus { 78 | background-color: #428bca; 79 | } 80 | */ 81 | 82 | /* End Twitter Bootstrap Override Styles */ 83 | -------------------------------------------------------------------------------- /main.nf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/main.nf -------------------------------------------------------------------------------- /plots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoisonAlien/basegraphics/101261cfb27408f85e20d5f7692360739dff70b4/plots.png --------------------------------------------------------------------------------