├── .github ├── .gitignore └── workflows │ ├── R-CMD-check.yml │ ├── articles.yml │ ├── pkgdown.yaml │ └── rhub.yaml ├── LICENSE ├── inst ├── logo │ ├── logo.png │ └── logo.R ├── htmlwidgets │ ├── parcats.yaml │ ├── lib │ │ └── plotly.js │ │ │ ├── plotly-htmlwidgets.css │ │ │ ├── locales │ │ │ ├── plotly-locale-ms.js │ │ │ ├── plotly-locale-id.js │ │ │ ├── plotly-locale-ca.js │ │ │ ├── plotly-locale-no.js │ │ │ ├── plotly-locale-bs.js │ │ │ ├── plotly-locale-da.js │ │ │ ├── plotly-locale-de-ch.js │ │ │ ├── plotly-locale-nl.js │ │ │ ├── plotly-locale-rm.js │ │ │ ├── plotly-locale-sl.js │ │ │ ├── plotly-locale-sr-sr.js │ │ │ ├── plotly-locale-af.js │ │ │ ├── plotly-locale-gl.js │ │ │ ├── plotly-locale-nl-be.js │ │ │ ├── plotly-locale-sq.js │ │ │ ├── plotly-locale-es-ar.js │ │ │ ├── plotly-locale-es-pe.js │ │ │ ├── plotly-locale-eu.js │ │ │ ├── plotly-locale-fr-ch.js │ │ │ ├── plotly-locale-me-me.js │ │ │ ├── plotly-locale-ro.js │ │ │ ├── plotly-locale-sk.js │ │ │ ├── plotly-locale-eo.js │ │ │ ├── plotly-locale-tr.js │ │ │ ├── plotly-locale-fo.js │ │ │ ├── plotly-locale-hr.js │ │ │ ├── plotly-locale-pl.js │ │ │ ├── plotly-locale-mt.js │ │ │ ├── plotly-locale-et.js │ │ │ ├── plotly-locale-hu.js │ │ │ ├── plotly-locale-lv.js │ │ │ ├── plotly-locale-lt.js │ │ │ ├── plotly-locale-is.js │ │ │ ├── plotly-locale-az.js │ │ │ ├── plotly-locale-zh-hk.js │ │ │ ├── plotly-locale-zh-tw.js │ │ │ ├── plotly-locale-vi.js │ │ │ ├── plotly-locale-he.js │ │ │ ├── plotly-locale-fa.js │ │ │ ├── plotly-locale-ur.js │ │ │ ├── plotly-locale-am.js │ │ │ ├── plotly-locale-ar-eg.js │ │ │ ├── plotly-locale-ar-dz.js │ │ │ ├── plotly-locale-th.js │ │ │ ├── plotly-locale-ar.js │ │ │ ├── plotly-locale-pa.js │ │ │ ├── plotly-locale-sr.js │ │ │ ├── plotly-locale-me.js │ │ │ ├── plotly-locale-hi-in.js │ │ │ ├── plotly-locale-bg.js │ │ │ ├── plotly-locale-tt.js │ │ │ ├── plotly-locale-mk.js │ │ │ ├── plotly-locale-ka.js │ │ │ ├── plotly-locale-gu.js │ │ │ ├── plotly-locale-hy.js │ │ │ ├── plotly-locale-ml.js │ │ │ ├── plotly-locale-el.js │ │ │ ├── plotly-locale-km.js │ │ │ ├── plotly-locale-ta.js │ │ │ ├── plotly-locale-cy.js │ │ │ ├── plotly-locale-sw.js │ │ │ ├── plotly-locale-fi.js │ │ │ ├── plotly-locale-de.js │ │ │ ├── plotly-locale-es.js │ │ │ ├── plotly-locale-it.js │ │ │ ├── plotly-locale-sv.js │ │ │ ├── plotly-locale-pt-pt.js │ │ │ ├── plotly-locale-pt-br.js │ │ │ ├── plotly-locale-fr.js │ │ │ ├── plotly-locale-cs.js │ │ │ ├── plotly-locale-zh-cn.js │ │ │ ├── plotly-locale-ko.js │ │ │ ├── plotly-locale-ja.js │ │ │ ├── plotly-locale-ru.js │ │ │ └── plotly-locale-uk.js │ │ │ └── LICENSE │ └── parcats.js ├── WORDLIST ├── htmlwidgetsgist.R └── shiny │ └── parcats │ ├── server.R │ └── ui.R ├── man ├── figures │ ├── demo1.gif │ ├── demo2.gif │ └── logo.png ├── parcats_demo.Rd ├── pipe.Rd ├── parcats-shiny.Rd └── parcats.Rd ├── pkgdown └── favicon │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── apple-touch-icon-60x60.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-152x152.png │ └── apple-touch-icon-180x180.png ├── cran-comments.md ├── tests ├── testthat.R ├── spelling.R └── testthat │ └── test_parcats.R ├── .gitignore ├── codecov.yml ├── .Rbuildignore ├── R ├── utils-pipe.R └── parcats.R ├── parcats.Rproj ├── NEWS.md ├── NAMESPACE ├── _pkgdown.yml ├── LICENSE.md ├── appveyor.yml ├── DESCRIPTION ├── vignettes └── parcats.Rmd ├── README.md └── README.Rmd /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | YEAR: 2019 2 | COPYRIGHT HOLDER: bjoern koneswarakantha 3 | -------------------------------------------------------------------------------- /inst/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/inst/logo/logo.png -------------------------------------------------------------------------------- /man/figures/demo1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/man/figures/demo1.gif -------------------------------------------------------------------------------- /man/figures/demo2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/man/figures/demo2.gif -------------------------------------------------------------------------------- /man/figures/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/man/figures/logo.png -------------------------------------------------------------------------------- /pkgdown/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/favicon.ico -------------------------------------------------------------------------------- /cran-comments.md: -------------------------------------------------------------------------------- 1 | ## R CMD check results 2 | 3 | 0 errors | 0 warnings | 0 note 4 | 5 | locally, Rhub, gh-actions 6 | -------------------------------------------------------------------------------- /pkgdown/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /pkgdown/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(parcats) 3 | library(easyalluvial) 4 | 5 | test_check("parcats") 6 | -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erblast/parcats/HEAD/pkgdown/favicon/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /inst/htmlwidgets/parcats.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: plotly.js 3 | version: 2.5.1 4 | src: htmlwidgets/lib/plotly.js 5 | script: ./plotly.min.js 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | dependencies/ 6 | revdep/ 7 | inst/doc 8 | docker.sh 9 | docs/ 10 | .DS_Store 11 | docs 12 | -------------------------------------------------------------------------------- /tests/spelling.R: -------------------------------------------------------------------------------- 1 | if(requireNamespace('spelling', quietly = TRUE)) 2 | spelling::spell_check_test(vignettes = TRUE, error = FALSE, 3 | skip_on_cran = TRUE) 4 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: false 2 | 3 | coverage: 4 | status: 5 | project: 6 | default: 7 | target: auto 8 | threshold: 1% 9 | patch: 10 | default: 11 | target: auto 12 | threshold: 1% 13 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/plotly-htmlwidgets.css: -------------------------------------------------------------------------------- 1 | /* 2 | just here so that plotly works 3 | correctly with ioslides. 4 | see https://github.com/ropensci/plotly/issues/463 5 | */ 6 | 7 | slide:not(.current) .plotly.html-widget{ 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /inst/WORDLIST: -------------------------------------------------------------------------------- 1 | Codecov 2 | Htmlwidget 3 | Htmlwidgets 4 | Rmd 5 | Visualise 6 | easyalluvial 7 | easyalluvial’ 8 | elementid 9 | freeform 10 | ggplot 11 | github 12 | htmlwidget 13 | js 14 | js’ 15 | magrittr 16 | metacran 17 | parcats’ 18 | parrallel 19 | plotly 20 | visualise 21 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^CRAN-RELEASE$ 2 | ^revdep$ 3 | ^dependencies$ 4 | ^.*\.Rproj$ 5 | ^\.Rproj\.user$ 6 | ^\.travis\.yml$ 7 | ^appveyor\.yml$ 8 | ^codecov\.yml$ 9 | ^README\.Rmd$ 10 | ^README-.*\.png$ 11 | ^cran-comments\.md$ 12 | ^LICENSE\.md$ 13 | ^_pkgdown\.yml$ 14 | ^vignettes$ 15 | ^docs$ 16 | ^docker\.sh$ 17 | ^pkgdown$ 18 | ^demo1\.png$ 19 | ^demo2\.png$ 20 | ^\.github$ 21 | ^DS_Store$ 22 | ^CRAN-SUBMISSION$ 23 | -------------------------------------------------------------------------------- /man/parcats_demo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/parcats.R 3 | \name{parcats_demo} 4 | \alias{parcats_demo} 5 | \title{run parcats shiny demo} 6 | \usage{ 7 | parcats_demo() 8 | } 9 | \value{ 10 | No return value, called for side effects 11 | } 12 | \description{ 13 | run parcats shiny demo 14 | } 15 | \examples{ 16 | if (interactive()) { 17 | parcats_demo() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /R/utils-pipe.R: -------------------------------------------------------------------------------- 1 | #' Pipe operator 2 | #' 3 | #' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. 4 | #' 5 | #' @name %>% 6 | #' @rdname pipe 7 | #' @keywords internal 8 | #' @export 9 | #' @importFrom magrittr %>% 10 | #' @usage lhs \%>\% rhs 11 | #' @param lhs A value or the magrittr placeholder. 12 | #' @param rhs A function call using the magrittr semantics. 13 | #' @return The result of calling `rhs(lhs)`. 14 | NULL 15 | -------------------------------------------------------------------------------- /parcats.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | ProjectId: 435c9099-d948-41ea-8fa6-f32013c0c0ad 3 | 4 | RestoreWorkspace: Default 5 | SaveWorkspace: Default 6 | AlwaysSaveHistory: Default 7 | 8 | EnableCodeIndexing: Yes 9 | UseSpacesForTab: Yes 10 | NumSpacesForTab: 2 11 | Encoding: UTF-8 12 | 13 | RnwWeave: Sweave 14 | LaTeX: pdfLaTeX 15 | 16 | BuildType: Package 17 | PackageUseDevtools: Yes 18 | PackageInstallArgs: --no-multiarch --with-keep.source 19 | PackageRoxygenize: rd,collate,namespace 20 | -------------------------------------------------------------------------------- /NEWS.md: -------------------------------------------------------------------------------- 1 | # parcats 0.1.0 2 | * adapt to easyalluvial v0.4.0 and ggplot2 v4.0.0 3 | 4 | # parcats 0.0.5 5 | * update vignette 6 | * fix documentation 7 | * fix examples 8 | 9 | # parcats 0.0.4 10 | * updated package dependencies 11 | 12 | # parcats 0.0.3 13 | * upgraded packaged 'plotly.js' to v2.5.1 14 | * fix shiny bug https://github.com/erblast/parcats/issues/6 15 | 16 | # parcats 0.0.2 17 | * upgraded packaged 'plotly.js' to v1.54.1 18 | 19 | # parcats 0.0.1 20 | 21 | * first release 22 | 23 | -------------------------------------------------------------------------------- /man/pipe.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils-pipe.R 3 | \name{\%>\%} 4 | \alias{\%>\%} 5 | \title{Pipe operator} 6 | \usage{ 7 | lhs \%>\% rhs 8 | } 9 | \arguments{ 10 | \item{lhs}{A value or the magrittr placeholder.} 11 | 12 | \item{rhs}{A function call using the magrittr semantics.} 13 | } 14 | \value{ 15 | The result of calling `rhs(lhs)`. 16 | } 17 | \description{ 18 | See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. 19 | } 20 | \keyword{internal} 21 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ms.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ms",dictionary:{},format:{days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],shortDays:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],shortMonths:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-id.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"id",dictionary:{},format:{days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],shortDays:["Min","Sen","Sel","Rab","kam","Jum","Sab"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],shortMonths:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ca.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ca",dictionary:{},format:{days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],shortDays:["Dug","Dln","Dmt","Dmc","Djs","Dvn","Dsb"],months:["Gener","Febrer","Mar\xe7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],shortMonths:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-no.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"no",dictionary:{},format:{days:["S\xf8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xf8rdag"],shortDays:["S\xf8n","Man","Tir","Ons","Tor","Fre","L\xf8r"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],shortMonths:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export("%>%") 4 | export(parcats) 5 | export(parcatsOutput) 6 | export(parcats_demo) 7 | export(render_parcats) 8 | import(dplyr) 9 | import(easyalluvial) 10 | import(forcats) 11 | import(purrr) 12 | import(tidyr) 13 | importFrom(graphics,text) 14 | importFrom(htmlwidgets,createWidget) 15 | importFrom(magrittr,"%>%") 16 | importFrom(stats,density) 17 | importFrom(stringr,str_extract) 18 | importFrom(stringr,str_split) 19 | importFrom(tibble,tibble) 20 | importFrom(tidyr,nest) 21 | importFrom(tidyr,uncount) 22 | importFrom(utils,data) 23 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-bs.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"bs",dictionary:{},format:{days:["Nedelja","Ponedeljak","Utorak","Srijeda","\u010cetvrtak","Petak","Subota"],shortDays:["Ned","Pon","Uto","Sri","\u010cet","Pet","Sub"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-da.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"da",dictionary:{},format:{days:["S\xf8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xf8rdag"],shortDays:["S\xf8n","Man","Tir","Ons","Tor","Fre","L\xf8r"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-de-ch.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"de-CH",dictionary:{},format:{days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-nl.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"nl",dictionary:{},format:{days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],shortDays:["zon","maa","din","woe","don","vri","zat"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],shortMonths:["jan","feb","maa","apr","mei","jun","jul","aug","sep","okt","nov","dec"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-rm.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"rm",dictionary:{},format:{days:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],shortDays:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],shortMonths:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sl.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sl",dictionary:{},format:{days:["Nedelja","Ponedeljek","Torek","Sreda","\u010cetrtek","Petek","Sobota"],shortDays:["Ned","Pon","Tor","Sre","\u010cet","Pet","Sob"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sr-sr.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sr-SR",dictionary:{},format:{days:["Nedelja","Ponedeljak","Utorak","Sreda","\u010cetvrtak","Petak","Subota"],shortDays:["Ned","Pon","Uto","Sre","\u010cet","Pet","Sub"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-af.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"af",dictionary:{},format:{days:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],shortDays:["Son","Maan","Dins","Woens","Don","Vry","Sat"],months:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],shortMonths:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-gl.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"gl",dictionary:{},format:{days:["Domingo","Luns","Martes","M\xe9rcores","Xoves","Venres","S\xe1bado"],shortDays:["Dom","Lun","Mar","M\xe9r","Xov","Ven","S\xe1b"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xu\xf1o","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],shortMonths:["Xan","Feb","Mar","Abr","Mai","Xu\xf1","Xul","Ago","Set","Out","Nov","Dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-nl-be.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"nl-BE",dictionary:{},format:{days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],shortDays:["zon","maa","din","woe","don","vri","zat"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],shortMonths:["jan","feb","maa","apr","mei","jun","jul","aug","sep","okt","nov","dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sq.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sq",dictionary:{},format:{days:["E Diel","E H\xebn\xeb","E Mart\xeb","E M\xebrkur\xeb","E Enjte","E Premte","E Shtune"],shortDays:["Di","H\xeb","Ma","M\xeb","En","Pr","Sh"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xebntor","Dhjetor"],shortMonths:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","N\xebn","Dhj"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-es-ar.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"es-AR",dictionary:{},format:{days:["Domingo","Lunes","Martes","Mi\xe9rcoles","Jueves","Viernes","S\xe1bado"],shortDays:["Dom","Lun","Mar","Mi\xe9","Juv","Vie","S\xe1b"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],shortMonths:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-es-pe.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"es-PE",dictionary:{},format:{days:["Domingo","Lunes","Martes","Mi\xe9rcoles","Jueves","Viernes","S\xe1bado"],shortDays:["Dom","Lun","Mar","Mi\xe9","Jue","Vie","Sab"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],shortMonths:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-eu.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"eu",dictionary:{},format:{days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],shortDays:["Iga","Ast","Ast","Ast","Ost","Ost","Lar"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],shortMonths:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],date:"%Y/%m/%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-fr-ch.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"fr-CH",dictionary:{},format:{days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],shortDays:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Janvier","F\xe9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\xfbt","Septembre","Octobre","Novembre","D\xe9cembre"],shortMonths:["Jan","F\xe9v","Mar","Avr","Mai","Jun","Jul","Ao\xfb","Sep","Oct","Nov","D\xe9c"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-me-me.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"me-ME",dictionary:{},format:{days:["Ne\u0111elja","Pone\u0111eljak","Utorak","Srijeda","\u010cetvrtak","Petak","Subota"],shortDays:["Ne\u0111","Pon","Uto","Sri","\u010cet","Pet","Sub"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ro.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ro",dictionary:{},format:{days:["Duminic\u0103","Luni","Marti","Miercuri","Joi","Vineri","S\xe2mb\u0103t\u0103"],shortDays:["Dum","Lun","Mar","Mie","Joi","Vin","S\xe2m"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],shortMonths:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sk.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sk",dictionary:{},format:{days:["Nedel'a","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"],shortDays:["Ned","Pon","Uto","Str","\u0160tv","Pia","Sob"],months:["Janu\xe1r","Febru\xe1r","Marec","Apr\xedl","M\xe1j","J\xfan","J\xfal","August","September","Okt\xf3ber","November","December"],shortMonths:["Jan","Feb","Mar","Apr","M\xe1j","J\xfan","J\xfal","Aug","Sep","Okt","Nov","Dec"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-eo.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"eo",dictionary:{},format:{days:["Diman\u0109o","Lundo","Mardo","Merkredo","\u0134a\u016ddo","Vendredo","Sabato"],shortDays:["Dim","Lun","Mar","Mer","\u0134a\u016d","Ven","Sab"],months:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","A\u016dgusto","Septembro","Oktobro","Novembro","Decembro"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","A\u016dg","Sep","Okt","Nov","Dec"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-tr.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"tr",dictionary:{},format:{days:["Pazar","Pazartesi","Sal\u0131","\xc7ar\u015famba","Per\u015fembe","Cuma","Cumartesi"],shortDays:["Pz","Pt","Sa","\xc7a","Pe","Cu","Ct"],months:["Ocak","\u015eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011fustos","Eyl\xfcl","Ekim","Kas\u0131m","Aral\u0131k"],shortMonths:["Oca","\u015eub","Mar","Nis","May","Haz","Tem","A\u011fu","Eyl","Eki","Kas","Ara"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-fo.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"fo",dictionary:{},format:{days:["Sunnudagur","M\xe1nadagur","T\xfdsdagur","Mikudagur","H\xf3sdagur","Fr\xedggjadagur","Leyardagur"],shortDays:["Sun","M\xe1n","T\xfds","Mik","H\xf3s","Fr\xed","Ley"],months:["Januar","Februar","Mars","Apr\xedl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],shortMonths:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-hr.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"hr",dictionary:{},format:{days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010cetvrtak","Petak","Subota"],shortDays:["Ned","Pon","Uto","Sri","\u010cet","Pet","Sub"],months:["Sije\u010danj","Velja\u010da","O\u017eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],shortMonths:["Sij","Velj","O\u017eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],date:"%d.%m.%Y."}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-pl.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"pl",dictionary:{},format:{days:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015aroda","Czwartek","Pi\u0105tek","Sobota"],shortDays:["Nie","Pn","Wt","\u015ar","Czw","Pt","So"],months:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017adziernik","Listopad","Grudzie\u0144"],shortMonths:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgetsgist.R: -------------------------------------------------------------------------------- 1 | shim_system_file <- function(package) { 2 | imports <- parent.env(asNamespace(package)) 3 | pkgload:::unlock_environment(imports) 4 | imports$system.file <- pkgload:::shim_system.file 5 | } 6 | 7 | shim_system_file("htmlwidgets") 8 | shim_system_file("htmltools") 9 | 10 | # After the code above has been run, you can load an in-development package 11 | # that uses htmlwidgets (like dygraphs or leaflet). After being loaded this way, 12 | # When the JS or CSS resources of the package are edited, they'll immediately 13 | # be available, without having to build and install the package. 14 | devtools::load_all() 15 | 16 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-mt.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"mt",dictionary:{},format:{days:["Il-\u0126add","It-Tnejn","It-Tlieta","L-Erbg\u0127a","Il-\u0126amis","Il-\u0120img\u0127a","Is-Sibt"],shortDays:["\u0126ad","Tne","Tli","Erb","\u0126am","\u0120im","Sib"],months:["Jannar","Frar","Marzu","April","Mejju","\u0120unju","Lulju","Awissu","Settembru","Ottubru","Novembru","Di\u010bembru"],shortMonths:["Jan","Fra","Mar","Apr","Mej","\u0120un","Lul","Awi","Set","Ott","Nov","Di\u010b"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-et.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"et",dictionary:{},format:{days:["P\xfchap\xe4ev","Esmasp\xe4ev","Teisip\xe4ev","Kolmap\xe4ev","Neljap\xe4ev","Reede","Laup\xe4ev"],shortDays:["P\xfchap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],months:["Jaanuar","Veebruar","M\xe4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],shortMonths:["Jaan","Veebr","M\xe4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-hu.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"hu",dictionary:{},format:{days:["Vas\xe1rnap","H\xe9tf\xf6","Kedd","Szerda","Cs\xfct\xf6rt\xf6k","P\xe9ntek","Szombat"],shortDays:["Vas","H\xe9t","Ked","Sze","Cs\xfc","P\xe9n","Szo"],months:["Janu\xe1r","Febru\xe1r","M\xe1rcius","\xc1prilis","M\xe1jus","J\xfanius","J\xfalius","Augusztus","Szeptember","Okt\xf3ber","November","December"],shortMonths:["Jan","Feb","M\xe1r","\xc1pr","M\xe1j","J\xfan","J\xfal","Aug","Szep","Okt","Nov","Dec"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-lv.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"lv",dictionary:{},format:{days:["sv\u0113tdiena","pirmdiena","otrdiena","tre\u0161diena","ceturtdiena","piektdiena","sestdiena"],shortDays:["svt","prm","otr","tre","ctr","pkt","sst"],months:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012blis","Maijs","J\u016bnijs","J\u016blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],shortMonths:["Jan","Feb","Mar","Apr","Mai","J\u016bn","J\u016bl","Aug","Sep","Okt","Nov","Dec"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-lt.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"lt",dictionary:{},format:{days:["sekmadienis","pirmadienis","antradienis","tre\u010diadienis","ketvirtadienis","penktadienis","\u0161e\u0161tadienis"],shortDays:["sek","pir","ant","tre","ket","pen","\u0161e\u0161"],months:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017e\u0117","Bir\u017eelis","Liepa","Rugpj\u016btis","Rugs\u0117jis","Spalis","Lapkritis","Gruodis"],shortMonths:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-is.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"is",dictionary:{},format:{days:["Sunnudagur","M\xe1nudagur","\xderi\xf0judagur","Mi\xf0vikudagur","Fimmtudagur","F\xf6studagur","Laugardagur"],shortDays:["Sun","M\xe1n","\xderi","Mi\xf0","Fim","F\xf6s","Lau"],months:["Jan\xfaar","Febr\xfaar","Mars","Apr\xedl","Ma\xed","J\xfan\xed","J\xfal\xed","\xc1g\xfast","September","Okt\xf3ber","N\xf3vember","Desember"],shortMonths:["Jan","Feb","Mar","Apr","Ma\xed","J\xfan","J\xfal","\xc1g\xfa","Sep","Okt","N\xf3v","Des"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-az.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"az",dictionary:{},format:{days:["Bazar","Bazar ert\u0259si","\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131","\xc7\u0259r\u015f\u0259nb\u0259","C\xfcm\u0259 ax\u015fam\u0131","C\xfcm\u0259","\u015e\u0259nb\u0259"],shortDays:["B","Be","\xc7a","\xc7","Ca","C","\u015e"],months:["Yanvar","Fevral","Mart","Aprel","May","\u0130yun","\u0130yul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],shortMonths:["Yan","Fev","Mar","Apr","May","\u0130yun","\u0130yul","Avq","Sen","Okt","Noy","Dek"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | navbar: 2 | structure: 3 | left: 4 | - home 5 | - intro 6 | - reference 7 | - articles 8 | - tutorials 9 | - news 10 | right: github 11 | components: 12 | home: 13 | icon: fas fa-home fa-lg 14 | href: index.html 15 | reference: 16 | text: Reference 17 | href: reference/index.html 18 | intro: 19 | text: Live Widget 20 | href: articles/parcats.html 21 | news: 22 | text: Changelog 23 | href: news/index.html 24 | template: 25 | params: 26 | ganalytics: UA-123997499-2 27 | url: https://erblast.github.io/parcats/ 28 | reference: 29 | - title: All functions 30 | desc: ~ 31 | contents: 32 | - '`parcats`' 33 | - '`parcats_demo`' 34 | - '`parcats-shiny`' 35 | 36 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-zh-hk.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"zh-HK",dictionary:{},format:{days:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],shortDays:["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],months:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],shortMonths:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-zh-tw.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"zh-TW",dictionary:{},format:{days:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],shortDays:["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],months:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],shortMonths:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],date:"%Y/%m/%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-vi.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"vi",dictionary:{},format:{days:["Ch\u1ee7 Nh\u1eadt","Th\u1ee9 Hai","Th\u1ee9 Ba","Th\u1ee9 T\u01b0","Th\u1ee9 N\u0103m","Th\u1ee9 S\xe1u","Th\u1ee9 B\u1ea3y"],shortDays:["CN","T2","T3","T4","T5","T6","T7"],months:["Th\xe1ng M\u1ed9t","Th\xe1ng Hai","Th\xe1ng Ba","Th\xe1ng T\u01b0","Th\xe1ng N\u0103m","Th\xe1ng S\xe1u","Th\xe1ng B\u1ea3y","Th\xe1ng T\xe1m","Th\xe1ng Ch\xedn","Th\xe1ng M\u01b0\u1eddi","Th\xe1ng M\u01b0\u1eddi M\u1ed9t","Th\xe1ng M\u01b0\u1eddi Hai"],shortMonths:["Th\xe1ng 1","Th\xe1ng 2","Th\xe1ng 3","Th\xe1ng 4","Th\xe1ng 5","Th\xe1ng 6","Th\xe1ng 7","Th\xe1ng 8","Th\xe1ng 9","Th\xe1ng 10","Th\xe1ng 11","Th\xe1ng 12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /.github/workflows/R-CMD-check.yml: -------------------------------------------------------------------------------- 1 | # For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. 2 | # https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | pull_request: 9 | branches: 10 | - main 11 | - master 12 | workflow_dispatch: 13 | 14 | name: R-CMD-check 15 | 16 | jobs: 17 | R-CMD-check: 18 | runs-on: macOS-latest 19 | env: 20 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | - uses: r-lib/actions/setup-r@v2 25 | with: 26 | use-public-rspm: true 27 | 28 | - uses: r-lib/actions/setup-r-dependencies@v2 29 | with: 30 | extra-packages: any::rcmdcheck 31 | needs: check 32 | 33 | - uses: r-lib/actions/check-r-package@v2 34 | with: 35 | error-on: '"note"' 36 | run_dont_test: true -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-he.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"he",dictionary:{},format:{days:["\u05e8\u05d0\u05e9\u05d5\u05df","\u05e9\u05e0\u05d9","\u05e9\u05dc\u05d9\u05e9\u05d9","\u05e8\u05d1\u05d9\u05e2\u05d9","\u05d7\u05de\u05d9\u05e9\u05d9","\u05e9\u05d9\u05e9\u05d9","\u05e9\u05d1\u05ea"],shortDays:["\u05d0'","\u05d1'","\u05d2'","\u05d3'","\u05d4'","\u05d5'","\u05e9\u05d1\u05ea"],months:["\u05d9\u05e0\u05d5\u05d0\u05e8","\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8","\u05de\u05e8\u05e5","\u05d0\u05e4\u05e8\u05d9\u05dc","\u05de\u05d0\u05d9","\u05d9\u05d5\u05e0\u05d9","\u05d9\u05d5\u05dc\u05d9","\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8","\u05e1\u05e4\u05d8\u05de\u05d1\u05e8","\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8","\u05e0\u05d5\u05d1\u05de\u05d1\u05e8","\u05d3\u05e6\u05de\u05d1\u05e8"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-fa.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"fa",dictionary:{},format:{days:["\u064a\u06a9\u0634\u0646\u0628\u0647","\u062f\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200c\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067e\u0646\u062c\u0634\u0646\u0628\u0647","\u062c\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"],shortDays:["\u064a","\u062f","\u0633","\u0686","\u067e","\u062c","\u0634"],months:["\u0641\u0631\u0648\u0631\u062f\u064a\u0646","\u0627\u0631\u062f\u064a\u0628\u0647\u0634\u062a","\u062e\u0631\u062f\u0627\u062f","\u062a\u064a\u0631","\u0645\u0631\u062f\u0627\u062f","\u0634\u0647\u0631\u064a\u0648\u0631","\u0645\u0647\u0631","\u0622\u0628\u0627\u0646","\u0622\u0630\u0631","\u062f\u064a","\u0628\u0647\u0645\u0646","\u0627\u0633\u0641\u0646\u062f"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%Y/%m/%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ur.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ur",dictionary:{},format:{days:["\u0627\u062a\u0648\u0627\u0631","\u067e\u064a\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"],shortDays:["\u0627\u062a\u0648\u0627\u0631","\u067e\u064a\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"],months:["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 bjoern koneswarakantha 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 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Plotly, Inc 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/articles.yml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | workflow_dispatch: 9 | 10 | name: articles 11 | 12 | jobs: 13 | articles: 14 | runs-on: ubuntu-latest 15 | env: 16 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 17 | R_KEEP_PKG_SOURCE: yes 18 | steps: 19 | - uses: actions/checkout@v3 20 | 21 | - uses: r-lib/actions/setup-r@v2 22 | with: 23 | use-public-rspm: true 24 | 25 | - uses: r-lib/actions/setup-r-dependencies@v2 26 | with: 27 | extra-packages: any::rcmdcheck 28 | needs: check 29 | - name: Install dependencies 30 | run: | 31 | install.packages(c("remotes", "devtools", "pkgdown")) 32 | remotes::install_deps(dependencies = TRUE) 33 | devtools::install() 34 | shell: Rscript {0} 35 | - name: Check 36 | run: | 37 | pkgdown::build_articles() 38 | shell: Rscript {0} -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-am.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"am",dictionary:{},format:{days:["\u1230\u1295\u12f4\u12ed","\u1218\u1295\u12f4\u12ed","\u1275\u12e9\u1235\u12f4\u12ed","\u12cc\u1295\u1235\u12f4\u12ed","\u1270\u122d\u1230\u12f4\u12ed","\u134d\u122b\u12ed\u12f4\u12ed","\u1233\u1270\u122d\u12f4\u12ed"],shortDays:["\u1230\u1295\u12f4","\u1218\u1295\u12f4","\u1275\u12e9\u1235","\u12cc\u1295\u1235","\u1270\u122d\u1230","\u134d\u122b\u12ed","\u1233\u1270\u122d"],months:["\u1303\u1295\u12cb\u122a","\u1348\u1265\u122d\u12cb\u122a","\u121b\u122d\u127d","\u12a0\u1355\u122a\u120d","\u121c\u12ed","\u1301\u1295","\u1301\u120b\u12ed","\u12a6\u1308\u1235\u1275","\u1234\u1355\u1274\u121d\u1260\u122d","\u12a6\u12ad\u1276\u1260\u122d","\u1296\u126c\u121d\u1260\u122d","\u12f2\u1234\u121d\u1260\u122d"],shortMonths:["\u1303\u1295\u12cb","\u1348\u1265\u122d","\u121b\u122d\u127d","\u12a0\u1355\u122a","\u121c\u12ed","\u1301\u1295","\u1301\u120b\u12ed","\u12a6\u1308\u1235","\u1234\u1355\u1274","\u12a6\u12ad\u1276","\u1296\u126c\u121d","\u12f2\u1234\u121d"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /man/parcats-shiny.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/parcats.R 3 | \name{parcats-shiny} 4 | \alias{parcats-shiny} 5 | \alias{parcatsOutput} 6 | \alias{render_parcats} 7 | \title{Shiny bindings for parcats} 8 | \usage{ 9 | parcatsOutput(outputId, width = "100\%", height = "100\%", inline = FALSE) 10 | 11 | render_parcats(expr, env = parent.frame(), quoted = FALSE) 12 | } 13 | \arguments{ 14 | \item{outputId}{output variable to read from} 15 | 16 | \item{width, height}{Must be a valid CSS unit (like \code{'100\%'}, 17 | \code{'400px'}, \code{'auto'}) or a number, which will be coerced to a 18 | string and have \code{'px'} appended.} 19 | 20 | \item{inline, }{logical, Default: FALSE} 21 | 22 | \item{expr}{An expression that generates a parcats} 23 | 24 | \item{env}{The environment in which to evaluate \code{expr}.} 25 | 26 | \item{quoted}{Is \code{expr} a quoted expression (with \code{quote()})? This 27 | is useful if you want to save an expression in a variable.} 28 | } 29 | \value{ 30 | No return value, called for side effects 31 | } 32 | \description{ 33 | Output and render functions for using parcats within Shiny 34 | applications and interactive Rmd documents. 35 | } 36 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ar-eg.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ar-EG",dictionary:{},format:{days:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],shortDays:["\u0623\u062d\u062f","\u0627\u062b\u0646\u064a\u0646","\u062b\u0644\u0627\u062b\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639\u0629","\u0633\u0628\u062a"],months:["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0625\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0629","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ar-dz.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ar-DZ",dictionary:{},format:{days:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],shortDays:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],months:["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | # DO NOT CHANGE the "init" and "install" sections below 2 | 3 | # Download script file from GitHub 4 | init: 5 | ps: | 6 | $ErrorActionPreference = "Stop" 7 | Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1" 8 | Import-Module '..\appveyor-tool.ps1' 9 | 10 | install: 11 | ps: Bootstrap 12 | 13 | cache: 14 | - C:\RLibrary 15 | 16 | environment: 17 | NOT_CRAN: true 18 | # env vars that may need to be set, at least temporarily, from time to time 19 | # see https://github.com/krlmlr/r-appveyor#readme for details 20 | # USE_RTOOLS: true 21 | # R_REMOTES_STANDALONE: true 22 | 23 | # Adapt as necessary starting from here 24 | 25 | build_script: 26 | - travis-tool.sh install_deps 27 | 28 | test_script: 29 | - travis-tool.sh run_tests 30 | 31 | on_failure: 32 | - 7z a failure.zip *.Rcheck\* 33 | - appveyor PushArtifact failure.zip 34 | 35 | artifacts: 36 | - path: '*.Rcheck\**\*.log' 37 | name: Logs 38 | 39 | - path: '*.Rcheck\**\*.out' 40 | name: Logs 41 | 42 | - path: '*.Rcheck\**\*.fail' 43 | name: Logs 44 | 45 | - path: '*.Rcheck\**\*.Rout' 46 | name: Logs 47 | 48 | - path: '\*_*.tar.gz' 49 | name: Bits 50 | 51 | - path: '\*_*.zip' 52 | name: Bits 53 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: parcats 2 | Title: Interactive Parallel Categories Diagrams for 'easyalluvial' 3 | Version: 0.1.0 4 | Authors@R: person( "Bjoern", "Koneswarakantha", role = c("aut","cre"), email = "datistics@gmail.com", comment = c(ORCID = "0000-0003-4585-7799") ) 5 | URL: https://erblast.github.io/parcats/ 6 | BugReports: https://github.com/erblast/parcats/issues/ 7 | Description: Complex graphical representations of data are best explored using interactive elements. 8 | 'parcats' adds interactive graphing capabilities to the 'easyalluvial' package. 9 | The 'plotly.js' parallel categories diagrams offer a good framework for 10 | creating interactive flow graphs that allow manual drag and drop sorting of dimensions 11 | and categories, highlighting single flows and displaying mouse over information. The 12 | 'plotly.js' dependency is quite heavy and therefore is outsourced into a separate package. 13 | License: MIT + file LICENSE 14 | Encoding: UTF-8 15 | Depends: R (>= 3.0.0) 16 | Suggests: 17 | testthat, 18 | covr, 19 | randomForest, 20 | knitr, 21 | rmarkdown, 22 | spelling, 23 | plotly, 24 | shiny 25 | RoxygenNote: 7.3.2 26 | Imports: 27 | easyalluvial (>= 0.4.0), 28 | tidyr (>= 1.0.0), 29 | dplyr, 30 | purrr, 31 | forcats, 32 | magrittr, 33 | tibble, 34 | htmlwidgets, 35 | stringr 36 | Language: en-US 37 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-th.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"th",dictionary:{},format:{days:["\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c","\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c","\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23","\u0e1e\u0e38\u0e18","\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35","\u0e28\u0e38\u0e01\u0e23\u0e4c","\u0e40\u0e2a\u0e32\u0e23\u0e4c"],shortDays:["\u0e2d\u0e32.","\u0e08.","\u0e2d.","\u0e1e.","\u0e1e\u0e24.","\u0e28.","\u0e2a."],months:["\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21","\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c","\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21","\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19","\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21","\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19","\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21","\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21","\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19","\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21","\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19","\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"],shortMonths:["\u0e21.\u0e04.","\u0e01.\u0e1e.","\u0e21\u0e35.\u0e04.","\u0e40\u0e21.\u0e22.","\u0e1e.\u0e04.","\u0e21\u0e34.\u0e22.","\u0e01.\u0e04.","\u0e2a.\u0e04.","\u0e01.\u0e22.","\u0e15.\u0e04.","\u0e1e.\u0e22.","\u0e18.\u0e04."],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ar.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ar",dictionary:{},format:{days:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],shortDays:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],months:["\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a","\u0634\u0628\u0627\u0637","\u0622\u0630\u0627\u0631","\u0646\u064a\u0633\u0627\u0646","\u0622\u0630\u0627\u0631","\u062d\u0632\u064a\u0631\u0627\u0646","\u062a\u0645\u0648\u0632","\u0622\u0628","\u0623\u064a\u0644\u0648\u0644","\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644","\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a","\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"],shortMonths:["1","2","3","4","5","6","7","8","9","10","11","12"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-pa.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"pa",dictionary:{},format:{days:["\u0a10\u0a24\u0a35\u0a3e\u0a30","\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30","\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30","\u0a2c\u0a41\u0a71\u0a27\u0a35\u0a3e\u0a30","\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30","\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30","\u0a38\u0a3c\u0a28\u0a3f\u0a71\u0a1a\u0a30\u0a35\u0a3e\u0a30"],shortDays:["\u0a10\u0a24","\u0a38\u0a4b\u0a2e","\u0a2e\u0a70\u0a17\u0a32","\u0a2c\u0a41\u0a71\u0a27","\u0a35\u0a40\u0a30","\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30","\u0a38\u0a3c\u0a28\u0a3f\u0a71\u0a1a\u0a30"],months:["\u0a1c\u0a28\u0a35\u0a30\u0a40","\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40","\u0a2e\u0a3e\u0a30\u0a1a","\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32","\u0a2e\u0a08","\u0a1c\u0a42\u0a28","\u0a1c\u0a41\u0a32\u0a3e\u0a08","\u0a05\u0a17\u0a38\u0a24","\u0a38\u0a24\u0a70\u0a2c\u0a30","\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30","\u0a28\u0a35\u0a70\u0a2c\u0a30","\u0a26\u0a38\u0a70\u0a2c\u0a30"],shortMonths:["\u0a1c\u0a28","\u0a2b\u0a3c\u0a30","\u0a2e\u0a3e\u0a30","\u0a05\u0a2a\u0a4d\u0a30\u0a48","\u0a2e\u0a08","\u0a1c\u0a42\u0a28","\u0a1c\u0a41\u0a32\u0a3e","\u0a05\u0a17","\u0a38\u0a24\u0a70","\u0a05\u0a15","\u0a28\u0a35\u0a70","\u0a26\u0a38\u0a70"],date:"%d-%m-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sr.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sr",dictionary:{},format:{days:["\u041d\u0435\u0434\u0435\u0459\u0430","\u041f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a","\u0423\u0442\u043e\u0440\u0430\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043a","\u041f\u0435\u0442\u0430\u043a","\u0421\u0443\u0431\u043e\u0442\u0430"],shortDays:["\u041d\u0435\u0434","\u041f\u043e\u043d","\u0423\u0442\u043e","\u0421\u0440\u0435","\u0427\u0435\u0442","\u041f\u0435\u0442","\u0421\u0443\u0431"],months:["\u0408\u0430\u043d\u0443\u0430\u0440","\u0424\u0435\u0431\u0440\u0443\u0430\u0440","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0438\u043b","\u041c\u0430\u0458","\u0408\u0443\u043d","\u0408\u0443\u043b","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440","\u041e\u043a\u0442\u043e\u0431\u0430\u0440","\u041d\u043e\u0432\u0435\u043c\u0431\u0430\u0440","\u0414\u0435\u0446\u0435\u043c\u0431\u0430\u0440"],shortMonths:["\u0408\u0430\u043d","\u0424\u0435\u0431","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0458","\u0408\u0443\u043d","\u0408\u0443\u043b","\u0410\u0432\u0433","\u0421\u0435\u043f","\u041e\u043a\u0442","\u041d\u043e\u0432","\u0414\u0435\u0446"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-me.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"me",dictionary:{},format:{days:["\u041d\u0435\u0452\u0435\u0459\u0430","\u041f\u043e\u043d\u0435\u0452\u0435\u0459\u0430\u043a","\u0423\u0442\u043e\u0440\u0430\u043a","\u0421\u0440\u0438\u0458\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043a","\u041f\u0435\u0442\u0430\u043a","\u0421\u0443\u0431\u043e\u0442\u0430"],shortDays:["\u041d\u0435\u0452","\u041f\u043e\u043d","\u0423\u0442\u043e","\u0421\u0440\u0438","\u0427\u0435\u0442","\u041f\u0435\u0442","\u0421\u0443\u0431"],months:["\u0408\u0430\u043d\u0443\u0430\u0440","\u0424\u0435\u0431\u0440\u0443\u0430\u0440","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0438\u043b","\u041c\u0430\u0458","\u0408\u0443\u043d","\u0408\u0443\u043b","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440","\u041e\u043a\u0442\u043e\u0431\u0430\u0440","\u041d\u043e\u0432\u0435\u043c\u0431\u0430\u0440","\u0414\u0435\u0446\u0435\u043c\u0431\u0430\u0440"],shortMonths:["\u0408\u0430\u043d","\u0424\u0435\u0431","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0458","\u0408\u0443\u043d","\u0408\u0443\u043b","\u0410\u0432\u0433","\u0421\u0435\u043f","\u041e\u043a\u0442","\u041d\u043e\u0432","\u0414\u0435\u0446"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-hi-in.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"hi-IN",dictionary:{},format:{days:["\u0930\u0935\u093f\u0935\u093e\u0930","\u0938\u094b\u092e\u0935\u093e\u0930","\u092e\u0902\u0917\u0932\u0935\u093e\u0930","\u092c\u0941\u0927\u0935\u093e\u0930","\u0917\u0941\u0930\u0941\u0935\u093e\u0930","\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930","\u0936\u0928\u093f\u0935\u093e\u0930"],shortDays:["\u0930\u0935\u093f","\u0938\u094b\u092e","\u092e\u0902\u0917\u0932","\u092c\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094d\u0930","\u0936\u0928\u093f"],months:["\u091c\u0928\u0935\u0930\u0940"," \u092b\u0930\u0935\u0930\u0940","\u092e\u093e\u0930\u094d\u091a","\u0905\u092a\u094d\u0930\u0948\u0932","\u092e\u0908","\u091c\u0942\u0928","\u091c\u0941\u0932\u093e\u0908","\u0905\u0917\u0938\u094d\u0924","\u0938\u093f\u0924\u092e\u094d\u092c\u0930","\u0905\u0915\u094d\u091f\u0942\u092c\u0930","\u0928\u0935\u092e\u094d\u092c\u0930","\u0926\u093f\u0938\u092e\u094d\u092c\u0930"],shortMonths:["\u091c\u0928","\u092b\u0930","\u092e\u093e\u0930\u094d\u091a","\u0905\u092a\u094d\u0930\u0948","\u092e\u0908","\u091c\u0942\u0928","\u091c\u0941\u0932\u093e\u0908","\u0905\u0917","\u0938\u093f\u0924","\u0905\u0915\u094d\u091f\u0942","\u0928\u0935","\u0926\u093f\u0938"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-bg.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"bg",dictionary:{},format:{days:["\u041d\u0435\u0434\u0435\u043b\u044f","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u044f\u0434\u0430","\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a","\u041f\u0435\u0442\u044a\u043a","\u0421\u044a\u0431\u043e\u0442\u0430"],shortDays:["\u041d\u0435\u0434","\u041f\u043e\u043d","\u0412\u0442\u043e","\u0421\u0440\u044f","\u0427\u0435\u0442","\u041f\u0435\u0442","\u0421\u044a\u0431"],months:["\u042f\u043d\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0438\u043b","\u041c\u0430\u0439","\u042e\u043d\u0438","\u042e\u043b\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438","\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438","\u041d\u043e\u0435\u043c\u0432\u0440\u0438","\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438"],shortMonths:["\u042f\u043d\u0443","\u0424\u0435\u0432","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0439","\u042e\u043d\u0438","\u042e\u043b\u0438","\u0410\u0432\u0433","\u0421\u0435\u043f","\u041e\u043a\u0442","\u041d\u043e\u0432","\u0414\u0435\u043a"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-tt.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"tt",dictionary:{},format:{days:["\u044f\u043a\u0448\u04d9\u043c\u0431\u0435","\u0434\u04af\u0448\u04d9\u043c\u0431\u0435","\u0441\u0438\u0448\u04d9\u043c\u0431\u0435","\u0447\u04d9\u0440\u0448\u04d9\u043c\u0431\u0435","\u043f\u04d9\u043d\u0497\u0435\u0448\u04d9\u043c\u0431\u0435","\u0497\u043e\u043c\u0433\u0430","\u0448\u0438\u043c\u0431\u04d9"],shortDays:["\u044f\u043a\u0448","\u0434\u04af\u0448","\u0441\u0438\u0448","\u0447\u04d9\u0440","\u043f\u04d9\u043d","\u0497\u043e\u043c","\u0448\u0438\u043c"],months:["\u0413\u044b\u043d\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],shortMonths:["\u0413\u044b\u0439\u043d","\u0424\u0435\u0432","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0439","\u0418\u044e\u043d","\u0418\u044e\u043b","\u0410\u0432\u0433","\u0421\u0435\u043d","\u041e\u043a\u0442","\u041d\u043e\u044f","\u0414\u0435\u043a"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-mk.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"mk",dictionary:{},format:{days:["\u041d\u0435\u0434\u0435\u043b\u0430","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043e\u043a","\u041f\u0435\u0442\u043e\u043a","\u0421\u0430\u0431\u043e\u0442\u0430"],shortDays:["\u041d\u0435\u0434","\u041f\u043e\u043d","\u0412\u0442\u043e","\u0421\u0440\u0435","\u0427\u0435\u0442","\u041f\u0435\u0442","\u0421\u0430\u0431"],months:["\u0408\u0430\u043d\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0438\u043b","\u041c\u0430\u0458","\u0408\u0443\u043d\u0438","\u0408\u0443\u043b\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438","\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438","\u041d\u043e\u0435\u043c\u0432\u0440\u0438","\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438"],shortMonths:["\u0408\u0430\u043d","\u0424\u0435\u0432","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0458","\u0408\u0443\u043d","\u0408\u0443\u043b","\u0410\u0432\u0433","\u0421\u0435\u043f","\u041e\u043a\u0442","\u041d\u043e\u0432","\u0414\u0435\u043a"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /.github/workflows/pkgdown.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | release: 8 | types: [published] 9 | workflow_dispatch: 10 | 11 | name: pkgdown.yaml 12 | 13 | permissions: read-all 14 | 15 | jobs: 16 | pkgdown: 17 | runs-on: ubuntu-latest 18 | # Only restrict concurrency for non-PR jobs 19 | concurrency: 20 | group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} 21 | env: 22 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 23 | permissions: 24 | contents: write 25 | steps: 26 | - uses: actions/checkout@v4 27 | 28 | - uses: r-lib/actions/setup-pandoc@v2 29 | 30 | - uses: r-lib/actions/setup-r@v2 31 | with: 32 | use-public-rspm: true 33 | 34 | - uses: r-lib/actions/setup-r-dependencies@v2 35 | with: 36 | extra-packages: any::pkgdown, local::. 37 | needs: website 38 | 39 | - name: Build site 40 | run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) 41 | shell: Rscript {0} 42 | 43 | - name: Deploy to GitHub pages 🚀 44 | if: github.event_name != 'pull_request' 45 | uses: JamesIves/github-pages-deploy-action@v4.5.0 46 | with: 47 | clean: false 48 | branch: gh-pages 49 | folder: docs 50 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ka.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ka",dictionary:{},format:{days:["\u10d9\u10d5\u10d8\u10e0\u10d0","\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8","\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8","\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8","\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8","\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8","\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8"],shortDays:["\u10d9\u10d5","\u10dd\u10e0\u10e8","\u10e1\u10d0\u10db","\u10dd\u10d7\u10ee","\u10ee\u10e3\u10d7","\u10de\u10d0\u10e0","\u10e8\u10d0\u10d1"],months:["\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8","\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8","\u10db\u10d0\u10e0\u10e2\u10d8","\u10d0\u10de\u10e0\u10d8\u10da\u10d8","\u10db\u10d0\u10d8\u10e1\u10d8","\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8","\u10d8\u10d5\u10da\u10d8\u10e1\u10d8","\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd","\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8","\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8","\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8","\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8"],shortMonths:["\u10d8\u10d0\u10dc","\u10d7\u10d4\u10d1","\u10db\u10d0\u10e0","\u10d0\u10de\u10e0","\u10db\u10d0\u10d8\u10e1\u10d8","\u10d8\u10d5\u10dc","\u10d8\u10d5\u10da","\u10d0\u10d2\u10d5","\u10e1\u10d4\u10e5","\u10dd\u10e5\u10e2","\u10dc\u10dd\u10d4","\u10d3\u10d4\u10d9"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-gu.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"gu",dictionary:{},format:{days:["\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0","\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0","\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0","\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0","\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0","\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0","\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"],shortDays:["\u0ab0\u0ab5\u0abf","\u0ab8\u0acb\u0aae","\u0aae\u0a82\u0a97\u0ab3","\u0aac\u0ac1\u0aa7","\u0a97\u0ac1\u0ab0\u0ac1","\u0ab6\u0ac1\u0a95\u0acd\u0ab0","\u0ab6\u0aa8\u0abf"],months:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0","\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0","\u0aae\u0abe\u0ab0\u0acd\u0a9a","\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2","\u0aae\u0ac7","\u0a9c\u0ac2\u0aa8","\u0a9c\u0ac1\u0ab2\u0abe\u0a88","\u0a91\u0a97\u0ab8\u0acd\u0a9f","\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0","\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0","\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0","\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"],shortMonths:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1","\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1","\u0aae\u0abe\u0ab0\u0acd\u0a9a","\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2","\u0aae\u0ac7","\u0a9c\u0ac2\u0aa8","\u0a9c\u0ac1\u0ab2\u0abe\u0a88","\u0a91\u0a97\u0ab8\u0acd\u0a9f","\u0ab8\u0aaa\u0acd\u0a9f\u0ac7","\u0a91\u0a95\u0acd\u0a9f\u0acb","\u0aa8\u0ab5\u0ac7","\u0aa1\u0abf\u0ab8\u0ac7"],date:"%d-%b-%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-hy.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"hy",dictionary:{},format:{days:["\u056f\u056b\u0580\u0561\u056f\u056b","\u0565\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b","\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b","\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b","\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b","\u0578\u0582\u0580\u0562\u0561\u0569","\u0577\u0561\u0562\u0561\u0569"],shortDays:["\u056f\u056b\u0580","\u0565\u0580\u056f","\u0565\u0580\u0584","\u0579\u0580\u0584","\u0570\u0576\u0563","\u0578\u0582\u0580\u0562","\u0577\u0562\u0569"],months:["\u0540\u0578\u0582\u0576\u057e\u0561\u0580","\u0553\u0565\u057f\u0580\u057e\u0561\u0580","\u0544\u0561\u0580\u057f","\u0531\u057a\u0580\u056b\u056c","\u0544\u0561\u0575\u056b\u057d","\u0540\u0578\u0582\u0576\u056b\u057d","\u0540\u0578\u0582\u056c\u056b\u057d","\u0555\u0563\u0578\u057d\u057f\u0578\u057d","\u054d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580"],shortMonths:["\u0540\u0578\u0582\u0576\u057e","\u0553\u0565\u057f\u0580","\u0544\u0561\u0580\u057f","\u0531\u057a\u0580","\u0544\u0561\u0575\u056b\u057d","\u0540\u0578\u0582\u0576\u056b\u057d","\u0540\u0578\u0582\u056c","\u0555\u0563\u057d","\u054d\u0565\u057a","\u0540\u0578\u056f","\u0546\u0578\u0575","\u0534\u0565\u056f"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ml.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ml",dictionary:{},format:{days:["\u0d1e\u0d3e\u0d2f\u0d30\u0d4d\u200d","\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d4d\u200d","\u0d1a\u0d4a\u0d35\u0d4d\u0d35","\u0d2c\u0d41\u0d27\u0d28\u0d4d\u200d","\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02","\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f","\u0d36\u0d28\u0d3f"],shortDays:["\u0d1e\u0d3e\u0d2f","\u0d24\u0d3f\u0d19\u0d4d\u0d15","\u0d1a\u0d4a\u0d35\u0d4d\u0d35","\u0d2c\u0d41\u0d27","\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02","\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f","\u0d36\u0d28\u0d3f"],months:["\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f","\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f","\u0d2e\u0d3e\u0d30\u0d4d\u200d\u0d1a\u0d4d\u0d1a\u0d4d","\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u200d","\u0d2e\u0d47\u0d2f\u0d4d","\u0d1c\u0d42\u0d23\u0d4d\u200d","\u0d1c\u0d42\u0d32\u0d48","\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d","\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d30\u0d4d\u200d","\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d30\u0d4d\u200d","\u0d28\u0d35\u0d02\u0d2c\u0d30\u0d4d\u200d","\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d30\u0d4d\u200d"],shortMonths:["\u0d1c\u0d28\u0d41","\u0d2b\u0d46\u0d2c\u0d4d","\u0d2e\u0d3e\u0d30\u0d4d\u200d","\u0d0f\u0d2a\u0d4d\u0d30\u0d3f","\u0d2e\u0d47\u0d2f\u0d4d","\u0d1c\u0d42\u0d23\u0d4d\u200d","\u0d1c\u0d42\u0d32\u0d3e","\u0d06\u0d17","\u0d38\u0d46\u0d2a\u0d4d","\u0d12\u0d15\u0d4d\u0d1f\u0d4b","\u0d28\u0d35\u0d02","\u0d21\u0d3f\u0d38"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-el.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"el",dictionary:{},format:{days:["\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae","\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1","\u03a4\u03c1\u03af\u03c4\u03b7","\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7","\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7","\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae","\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"],shortDays:["\u039a\u03c5\u03c1","\u0394\u03b5\u03c5","\u03a4\u03c1\u03b9","\u03a4\u03b5\u03c4","\u03a0\u03b5\u03bc","\u03a0\u03b1\u03c1","\u03a3\u03b1\u03b2"],months:["\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2","\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2","\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2","\u039c\u03ac\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2","\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2","\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2","\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2","\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"],shortMonths:["\u0399\u03b1\u03bd","\u03a6\u03b5\u03b2","\u039c\u03b1\u03c1","\u0391\u03c0\u03c1","\u039c\u03b1\u03b9","\u0399\u03bf\u03c5\u03bd","\u0399\u03bf\u03c5\u03bb","\u0391\u03c5\u03b3","\u03a3\u03b5\u03c0","\u039f\u03ba\u03c4","\u039d\u03bf\u03b5","\u0394\u03b5\u03ba"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/logo/logo.R: -------------------------------------------------------------------------------- 1 | 2 | require(hexSticker) 3 | require(tidyverse) 4 | require(easyalluvial) 5 | 6 | monthly_flights = nycflights13::flights %>% 7 | group_by(month, tailnum, origin, dest, carrier) %>% 8 | summarise() %>% 9 | group_by( tailnum, origin, dest, carrier) %>% 10 | count() %>% 11 | filter( n == 12 ) %>% 12 | select( - n ) %>% 13 | left_join( nycflights13::flights ) %>% 14 | .[complete.cases(.), ] %>% 15 | ungroup() %>% 16 | mutate( flight_id = pmap_chr(list(tailnum, origin, dest, carrier), paste ) 17 | , qu = cut(month, 4)) %>% 18 | group_by(flight_id, carrier, origin, dest, qu ) %>% 19 | summarise( mean_arr_delay = mean(arr_delay) ) %>% 20 | ungroup() %>% 21 | mutate( mean_arr_delay = ifelse( mean_arr_delay < 10, 'on_time', 'late' ) ) 22 | 23 | 24 | 25 | levels(monthly_flights$qu) = c('Q1', 'Q2', 'Q3', 'Q4') 26 | 27 | data_long = monthly_flights 28 | 29 | col = viridisLite::magma(12) 30 | 31 | p = alluvial_long(monthly_flights, key = qu, value = mean_arr_delay, fill = carrier, id = flight_id 32 | , col_vector_flow = col 33 | , col_vector_value = c('grey', 'darkgrey') 34 | , stratum_labels = FALSE 35 | , stratum_width = 0 ) + 36 | labs( caption = '') + 37 | theme_minimal() + 38 | theme( text = element_blank(), panel.grid = element_blank() ) 39 | 40 | 41 | p <- p + theme_void() + theme_transparent() 42 | 43 | sticker(p, package="parcats", p_size=12, s_x=1, s_y=.9, 44 | p_x = 1 45 | , p_y = 1.625 46 | , p_color = 'black' 47 | , s_width = 1.3 48 | , s_height = 1.3 49 | , h_fill = 'ivory' 50 | , h_fill = 'ivory' 51 | , h_color = 'darkgrey' 52 | , filename = './inst/logo/logo.png' 53 | ) 54 | 55 | 56 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-km.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"km",dictionary:{},format:{days:["\u1790\u17d2\u1784\u17c3\u200b\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799","\u1790\u17d2\u1784\u17c3\u200b\u1785\u1793\u17d2\u1791","\u1790\u17d2\u1784\u17c3\u200b\u17a2\u1784\u17d2\u1782\u17b6\u179a","\u1790\u17d2\u1784\u17c3\u200b\u1796\u17bb\u1792","\u1790\u17d2\u1784\u17c3\u200b\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17d2\u178f\u17b7\u17cd","\u1790\u17d2\u1784\u17c3\u200b\u179f\u17bb\u1780\u17d2\u179a","\u1790\u17d2\u1784\u17c3\u200b\u179f\u17c5\u179a\u17cd"],shortDays:["\u17a2\u17b6","\u1785\u1793\u17d2\u1791","\u17a2\u1784\u17d2\u1782","\u1796\u17bb\u1792","\u1796\u17d2\u179a\u17a0","\u179f\u17bb","\u179f\u17c5\u179a\u17cd"],months:["\u1781\u17c2\u200b\u1798\u1780\u179a\u17b6","\u1781\u17c2\u200b\u1780\u17bb\u1798\u17d2\u1797\u17c8","\u1781\u17c2\u200b\u1798\u17b7\u1793\u17b6","\u1781\u17c2\u200b\u1798\u17c1\u179f\u17b6","\u1781\u17c2\u200b\u17a7\u179f\u1797\u17b6","\u1781\u17c2\u200b\u1798\u17b7\u1790\u17bb\u1793\u17b6","\u1781\u17c2\u200b\u1780\u1780\u17d2\u1780\u178a\u17b6","\u1781\u17c2\u200b\u179f\u17b8\u17a0\u17b6","\u1781\u17c2\u200b\u1780\u1789\u17d2\u1789\u17b6","\u1781\u17c2\u200b\u178f\u17bb\u179b\u17b6","\u1781\u17c2\u200b\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6","\u1781\u17c2\u200b\u1792\u17d2\u1793\u17bc"],shortMonths:["\u1798\u1780","\u1780\u17bb","\u1798\u17b7\u1793\u17b6","\u1798\u17c1","\u17a7\u179f","\u1798\u17b7\u1790\u17bb","\u1780\u1780\u17d2\u1780","\u179f\u17b8","\u1780\u1789\u17d2\u1789\u17b6","\u178f\u17bb\u179b\u17b6","\u179c\u17b7\u1785\u17d2\u1786\u17b7","\u1792\u17d2\u1793\u17bc"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ta.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ta",dictionary:{},format:{days:["\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8"],shortDays:["\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1","\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd","\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd","\u0baa\u0bc1\u0ba4\u0ba9\u0bcd","\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd","\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf","\u0b9a\u0ba9\u0bbf"],months:["\u0ba4\u0bc8","\u0bae\u0bbe\u0b9a\u0bbf","\u0baa\u0b99\u0bcd\u0b95\u0bc1\u0ba9\u0bbf","\u0b9a\u0bbf\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8","\u0bb5\u0bc8\u0b95\u0bbe\u0b9a\u0bbf","\u0b86\u0ba9\u0bbf","\u0b86\u0b9f\u0bbf","\u0b86\u0bb5\u0ba3\u0bbf","\u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bbe\u0b9a\u0bbf","\u0b90\u0baa\u0bcd\u0baa\u0b9a\u0bbf","\u0b95\u0bbe\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf\u0b95\u0bc8","\u0bae\u0bbe\u0bb0\u0bcd\u0b95\u0bb4\u0bbf"],shortMonths:["\u0ba4\u0bc8","\u0bae\u0bbe\u0b9a\u0bbf","\u0baa\u0b99\u0bcd","\u0b9a\u0bbf\u0ba4\u0bcd","\u0bb5\u0bc8\u0b95\u0bbe","\u0b86\u0ba9\u0bbf","\u0b86\u0b9f\u0bbf","\u0b86\u0bb5","\u0baa\u0bc1\u0bb0","\u0b90\u0baa\u0bcd","\u0b95\u0bbe\u0bb0\u0bcd","\u0bae\u0bbe\u0bb0\u0bcd"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /vignettes/parcats.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: html_document 3 | title: Live Widget 4 | always_allow_html: no 5 | editor_options: 6 | chunk_output_type: console 7 | --- 8 | 9 | 10 | ## easyalluvial 11 | 12 | `parcats` requires an alluvial plot created with `easyalluvial` to create an interactive parrallel categories diagram. 13 | 14 | - [Data exploration with alluvial plots](https://www.datisticsblog.com/2018/10/intro_easyalluvial/#features) 15 | 16 | - [easyalluvial github page](https://github.com/erblast/easyalluvial) 17 | 18 | 19 | ## Examples 20 | 21 | ```{r} 22 | suppressPackageStartupMessages(require(dplyr)) 23 | suppressPackageStartupMessages(require(easyalluvial)) 24 | suppressPackageStartupMessages(require(parcats)) 25 | ``` 26 | 27 | 28 | ### Parcats from alluvial from data in wide format 29 | 30 | ```{r eval = TRUE, fig.width = 10, fig.height = 7} 31 | 32 | data("mtcars2", package = "easyalluvial") 33 | 34 | p <- alluvial_wide(mtcars2, max_variables = 5) 35 | 36 | parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 37 | 38 | ``` 39 | 40 | 41 | ### Parcats from model response alluvial 42 | 43 | Machine Learning models operate in a multidimensional space and their response is hard to visualise. Model response and partial dependency plots attempt to visualise ML models in a two dimensional space. Using alluvial plots or parrallel categories diagrams we can increase the number of dimensions. 44 | 45 | - [Visualise model response with alluvial plots](https://www.datisticsblog.com/page/visualising-model-response-with-easyalluvial/) 46 | 47 | Here we see the response of a random forest model if we vary the three variables with the highest importance while keeping all other features at their median/mode value. 48 | 49 | 50 | ```{r eval = TRUE, fig.width = 10, fig.height = 7} 51 | df <- select(mtcars2, -ids ) 52 | m <- randomForest::randomForest( disp ~ ., df) 53 | imp <- m$importance 54 | dspace <- get_data_space(df, imp, degree = 3) 55 | pred <- predict(m, newdata = dspace) 56 | p <- alluvial_model_response(pred, dspace, imp, degree = 3) 57 | 58 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 59 | 60 | ``` 61 | 62 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-cy.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"cy",dictionary:{Autoscale:"Graddfa awtomatig","Box Select":"Dewiswch \xe2 blwch","Click to enter Colorscale title":"Cliciwch i nodi teitl Graddfa Liw","Click to enter Component A title":"Cliciwch i nodi teitl Cydran A","Click to enter Component B title":"Cliciwch i nodi teitl Cydran B","Click to enter Plot title":"Cliciwch i nodi teitl y Plot","Click to enter Component C title":"Cliciwch i nodi teitl Cydran C","Click to enter X axis title":"Cliciwch i nodi teitl echelin X","Click to enter Y axis title":"Cliciwch i nodi teitl echelin Y","Click to enter radial axis title":"Cliciwch i nodi teitl echelin reiddiol","Compare data on hover":"Cymharwch ddata wrth hofran","Double-click on legend to isolate one trace":"Dwbl-gliciwch ar yr allwedd i neilltuo un llinell","Double-click to zoom back out":"Dwbl-gliciwch i chwyddo'n \xf4l","Download plot":"Lawrlwythwch blot","Download plot as a png":"Lawrlwythwch y plot fel png","Edit in Chart Studio":"Golygu yn Chart Studio","IE only supports svg. Changing format to svg.":"Dim ond svg mae IE yn ei gefnogi. Newid fformat i svg.","Lasso Select":"Dewiswch \xe2 las\u0175","Orbital rotation":"Cylchdroi orbital",Pan:"Pan","Produced with Plotly":"Cynhyrchwyd gyda Plotly",Reset:"Ailosod","Reset axes":"Ailosod echelinau","Reset camera to default":"Ailosod camera i'r rhagosodiad","Reset camera to last save":"Ailosod camera i'r cadw diwethaf","Reset view":"Ailosodwch y golwg","Reset views":"Ailosod olygfeydd","Show closest data on hover":"Dangos y data agosaf wrth hofran","Snapshot succeeded":"Llwyddodd y Ciplun","Sorry, there was a problem downloading your snapshot!":"Mae'n ddrwg gennym, roedd problem wrth lawrlwytho eich ciplun!","Taking snapshot - this may take a few seconds":"Tynnu ciplun - gallai hyn gymryd ychydig o eiliadau","Toggle Spike Lines":"Toglo llinellau pigog","Toggle show closest data on hover":"Toglo dangos y data agosaf wrth hofran","Turntable rotation":"Cylchdroi trofwrdd",Zoom:"Chwyddo","Zoom in":"Closio","Zoom out":"Cilio","close:":"cau:","high:":"uchel:","incoming flow count:":"cyfrif llif sy'n dod i mewn:","kde:":"kde:","lat:":"lledred:","lon:":"hydred","low:":"isel:","lower fence:":"ffens isaf:","max:":"uchafbwynt:","mean \xb1 \u03c3:":"cymedr \xb1 \u03c3:","mean:":"cymedr:","median:":"canolrif:","min:":"isafbwynt:","new text":"testun newydd","open:":"agor:","outgoing flow count:":"cyfrif llif sy'n mynd allan:","q1:":"q1:","q3:":"q3:","source:":"ffynhonnell:","target:":"targed:",trace:"olin","upper fence:":"ffens uchaf:"},format:{days:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],shortDays:["Sul","Llun","Maw","Mer","Iau","Gwen","Sad"],months:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],shortMonths:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Awst","Medi","Hyd","Tach","Rhag"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sw.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sw",dictionary:{Autoscale:"Kigezo - otomatiki","Box Select":"Teua kisanduku","Click to enter Colorscale title":"Bonyeza kuandika kichwa cha Colorscale","Click to enter Component A title":"Bonyeza kuandika kichwa cha sehemu A","Click to enter Component B title":"Bonyeza kuandika kichwa cha sehemu B","Click to enter Component C title":"Bonyeza kuandika kichwa cha sehemu C","Click to enter Plot title":"Bonyeza kuandika kichwa cha Plot","Click to enter X axis title":"Bonyeza kuandika kichwa cha mhimili wa X","Click to enter Y axis title":"Bonyeza kuandika kichwa cha mhimili wa Y","Click to enter radial axis title":"Bonyeza kuandika kichwa cha mhimili wa radial","Compare data on hover":"Linganisha data kwa kuelea kielekezi","Double-click on legend to isolate one trace":"Bonyeza mara mbili juu ya hadithi ili kutenganisha moja kwa moja","Double-click to zoom back out":"Bonyeza mara mbili ili kuvuta nje","Download plot as a png":"Pakua mpango kama png","Download plot":"Pakua mpango","Edit in Chart Studio":"Hariri katika Chart studio","IE only supports svg. Changing format to svg.":"IE inatumia tu svg. Tunabadilisha muundo kuwa svg.","Lasso Select":"Kuteua lasso","Orbital rotation":"Mzunguko wa mazao",Pan:"Tandaza","Produced with Plotly":"Ilitengenezwa na Plotly",Reset:"Weka upya","Reset axes":"Weka upya axes","Reset camera to default":"Rudisha kamera kwenye uhifadhi wa default","Reset camera to last save":"Rudisha kamera kwenye uhifadhi wa mwisho","Reset view":"Weka upya mtazamo","Reset views":"Weka upya maoni","Show closest data on hover":"Onyesha data iliyo karibu zaidi kielekezi kinapoelea","Snapshot succeeded":"Snapshot ilifanikiwa","Sorry, there was a problem downloading your snapshot!":"Samahani, kulikuwa na shida kupakua picha yako!","Taking snapshot - this may take a few seconds":"Kuchukua snapshot - hii inaweza kuchukua sekunde chache","Toggle Spike Lines":"Badilisha Mistari ya Spike","Toggle show closest data on hover":"Badilisha mabadiliko ya karibu zaidi kwenye hover","Turntable rotation":"Zunguka kwa mhimili wa Z",Zoom:"Vuta","Zoom in":"Vuta nje","Zoom out":"Vuta ndani","close:":"funga:","high:":"juu:","incoming flow count:":"hesabu ya mtiririko unaokuja:","kde:":"kde:","lat:":"lat:","lon:":"lon:","low:":"chini:","lower fence:":"fensi ya chini:","max:":"upeo:","mean \xb1 \u03c3:":"maana \xb1 \u03c3:","mean:":"maana:","median:":"wastani:","min:":"kidogo:","new text":"nakala mpya","open:":"fungua:","outgoing flow count:":"hesabu ya mtiririko unaotoka:","q1:":"q1:","q3:":"q3:","source:":"chanzo:","target:":"lengo:",trace:"fuatilia","upper fence:":"Fensi ya juu:"},format:{days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],shortMonths:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],date:"%d/%m/%Y",decimal:".",thousands:","}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-fi.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"fi",dictionary:{Autoscale:"Autoskaalaa","Box Select":"Laatikkovalinta","Click to enter Colorscale title":"Klikkaa antaaksesi v\xe4riskaalan otsikko","Click to enter Component A title":"Klikkaa antaaksesi komponentin A otsikko","Click to enter Component B title":"Klikkaa antaaksesi komponentin B otsikko","Click to enter Component C title":"Klikkaa antaaksesi komponentin C otsikko","Click to enter Plot title":"Klikkaa antaaksesi kuvion otsikko","Click to enter X axis title":"Klikkaa antaaksesi x-akselin otsikko","Click to enter Y axis title":"Klikkaa antaaksesi y-akselin otsikko","Click to enter radial axis title":"Klikkaa antaaksesi radiaalisen akselin otsikko","Compare data on hover":"Vertaa dataa kursorilla","Double-click on legend to isolate one trace":"Kaksoisklikkaa selitett\xe4 erist\xe4\xe4ksesi yksi sarja","Double-click to zoom back out":"Kaksoisklikkaa zoomataksesi ulos","Download plot":"Lataa kuvio","Download plot as png":"Lataa kuvio png-muodossa","Edit in Chart Studio":"Muokkaa Chart Studiossa","IE only supports svg. Changing format to svg.":"Formaatiksi vaihdetaan IE:n tukema svg.","Lasso Select":"Lassovalinta","Orbital rotation":"Orbitaalikierto",Pan:"Panorointi","Produced with Plotly":"Tuotettu Plotlyll\xe4",Reset:"Palauta oletusasetukset","Reset axes":"Palauta akselien oletusasetukset","Reset camera to default":"Palauta kameran oletusasetukset","Reset camera to last save":"Palauta kameran viimeksi tallennetut asetukset","Reset view":"Palauta n\xe4kym\xe4n oletusasetukset","Reset views":"Palauta n\xe4kymien oletusasetukset","Show closest data on hover":"N\xe4yt\xe4 kursoria l\xe4hin data","Snapshot succeeded":"Tilannekuvan ottaminen onnistui","Sorry, there was a problem downloading your snapshot!":"Pahoittelut, tilannekuvan lataaminen ep\xe4onnistui!","Taking snapshot - this may take a few seconds":"Otetaan tilannekuvaa - odota hetki","Toggle Spike Lines":"N\xe4yt\xe4 huiput","Toggle show closest data on hover":"N\xe4yt\xe4 kursoria l\xe4hin data","Turntable rotation":"Tasokierto",Zoom:"Zoomaus","Zoom in":"Zoomaa sis\xe4\xe4n","Zoom out":"Zoomaa ulos","close:":"loppu:","high:":"korkein:","incoming flow count:":"saapuva virtaus:","kde:":"ydinestimointi:","lat:":"lat.:","lon:":"lon.:","low:":"matalin:","lower fence:":"alempi raja:","max:":"maks.:","mean \xb1 \u03c3:":"keskiarvo \xb1 \u03c3:","mean:":"keskiarvo:","median:":"mediaani:","min:":"min.:","new text":"uusi teksti","open:":"alku:","outgoing flow count:":"l\xe4htev\xe4 virtaus:","q1:":"q1:","q3:":"q3:","source:":"l\xe4hde:","target:":"kohde:",trace:"sarja","upper fence:":"ylempi raja:"},format:{days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],shortDays:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xe4kuu","hein\xe4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],shortMonths:["tammi","helmi","maalis","huhti","touko","kes\xe4","hein\xe4","elo","syys","loka","marras","joulu"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-de.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"de",dictionary:{Autoscale:"Automatische Skalierung","Box Select":"Rechteckauswahl","Click to enter Colorscale title":"Klicken, um den Farbskalatitel einzugeben","Click to enter Component A title":"Klicken, um den Titel der Komponente A einzugeben","Click to enter Component B title":"Klicken, um den Titel der Komponente B einzugeben","Click to enter Component C title":"Klicken, um den Titel der Komponente C einzugeben","Click to enter Plot title":"Klicken, um den Titel des Graphen einzugeben","Click to enter X axis title":"Klicken, um den Titel der X-Achse einzugeben","Click to enter Y axis title":"Klicken, um den Titel der Y-Achse einzugeben","Compare data on hover":"\xdcber die Daten fahren, um sie zu vergleichen","Double-click on legend to isolate one trace":"Daten isolieren durch Doppelklick in der Legende","Double-click to zoom back out":"Herauszoomen durch Doppelklick","Download plot as a png":"Graphen als PNG herunterladen","Download plot":"Graphen herunterladen","Edit in Chart Studio":"Im Chart Studio bearbeiten","IE only supports svg. Changing format to svg.":"IE unterst\xfctzt nur SVG-Dateien. Format wird zu SVG gewechselt.","Lasso Select":"Lassoauswahl","Orbital rotation":"Orbitalrotation",Pan:"Verschieben","Produced with Plotly":"Erstellt mit Plotly",Reset:"Zur\xfccksetzen","Reset axes":"Achsen zur\xfccksetzen","Reset camera to default":"Kamera auf Standard zur\xfccksetzen","Reset camera to last save":"Kamera auf letzte Speicherung zur\xfccksetzen","Reset view":"Ansicht zur\xfccksetzen","Reset views":"Ansichten zur\xfccksetzen","Show closest data on hover":"Zeige n\xe4heste Daten beim \xdcberfahren","Snapshot succeeded":"Snapshot erfolgreich","Sorry, there was a problem downloading your snapshot!":"Es gab ein Problem beim Herunterladen des Snapshots","Taking snapshot - this may take a few seconds":"Erstelle einen Snapshot - dies kann einige Sekunden dauern",Zoom:"Zoom","Zoom in":"Hineinzoomen","Zoom out":"Herauszoomen","close:":"Schluss:",trace:"Datenspur","lat:":"Lat.:","lon:":"Lon.:","q1:":"q1:","q3:":"q3:","source:":"Quelle:","target:":"Ziel:","lower fence:":"Untere Schranke:","upper fence:":"Obere Schranke:","max:":"Max.:","mean \xb1 \u03c3:":"Mittelwert \xb1 \u03c3:","mean:":"Mittelwert:","median:":"Median:","min:":"Min.:","Turntable rotation":"Drehscheibenorbit","Toggle Spike Lines":"Bezugslinien an-/abschalten","open:":"Er\xf6ffnung:","high:":"H\xf6chstkurs:","low:":"Tiefstkurs:","Toggle show closest data on hover":"Anzeige der n\xe4hesten Daten an-/abschalten","incoming flow count:":"Anzahl eingehender Verbindungen:","outgoing flow count:":"Anzahl ausgehender Verbindungen:","kde:":"Dichte:"},format:{days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],date:"%d.%m.%Y",decimal:",",thousands:"."}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/shiny/parcats/server.R: -------------------------------------------------------------------------------- 1 | # 2 | # This is the server logic of a Shiny web application. You can run the 3 | # application by clicking 'Run App' above. 4 | # 5 | # Find out more about building applications with Shiny here: 6 | # 7 | # http://shiny.rstudio.com/ 8 | # 9 | 10 | library(shiny) 11 | library(easyalluvial) 12 | library(parcats) 13 | library(tidyverse) 14 | library(plotly) 15 | 16 | 17 | 18 | 19 | # Define server logic required to draw a histogram 20 | shinyServer(function(input, output) { 21 | 22 | p <- reactive({ 23 | alluvial_wide( 24 | mtcars2, 25 | max_variables = 5, 26 | fill_by = input$select_fill_by, 27 | col_vector_flow = palette_filter( 28 | palette_qualitative(), 29 | greys = "greys" %in% input$check_group_col_filters, 30 | # similar = "similar" %in% input$check_group_col_filters, 31 | reds = "reds" %in% input$check_group_col_filters, 32 | greens = "greens" %in% input$check_group_col_filters, 33 | blues = "blues" %in% input$check_group_col_filters, 34 | dark = "dark" %in% input$check_group_col_filters, 35 | medium = "medium" %in% input$check_group_col_filters, 36 | bright = "bright" %in% input$check_group_col_filters 37 | # thresh_similar = input$select_num_tresh_similar 38 | ), 39 | bin_labels = 40 | if (input$select_bin_labels == 'c("LL", "ML", "M", "MH", "HH")') 41 | c("LL", "ML", "M", "MH", "HH") 42 | else input$select_bin_labels, 43 | scale = "scale" %in% input$check_group_bin_numerics, 44 | center = "center" %in% input$check_group_bin_numerics, 45 | transform = "transform" %in% input$check_group_bin_numerics 46 | ) 47 | }) 48 | 49 | output$easyalluvial <- shiny::renderPlot({ 50 | if (! input$check_marginal_histograms_easyalluvial) { 51 | p() 52 | } else { 53 | p() %>% 54 | add_marginal_histograms(mtcars2) 55 | } 56 | }) 57 | 58 | output$parcats <- parcats::render_parcats({ 59 | 60 | parcats( 61 | p(), 62 | marginal_histograms = input$check_marginal_histograms, 63 | data_input = mtcars2, 64 | hoveron = input$select_hoveron, 65 | hoverinfo = input$select_hoverinfo, 66 | arrangement = input$select_arrangement, 67 | bundlecolors = input$check_bundle_colors, 68 | sortpaths = input$select_sortpaths, 69 | labelfont = list( 70 | size = input$select_num_label_font_size, 71 | color = input$select_label_font_colour 72 | ), 73 | tickfont = list( 74 | size = input$select_num_tick_font_size, 75 | color = input$select_tick_font_colour 76 | ), 77 | offset_marginal_histograms = input$select_num_offset_marginal_histograms, 78 | width = 1024, 79 | height = 768 80 | ) 81 | 82 | }) 83 | 84 | }) 85 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-es.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"es",dictionary:{Autoscale:"Autoescalar","Box Select":"Seleccionar Caja","Click to enter Colorscale title":"Introducir el t\xedtulo de la Escala de Color","Click to enter Component A title":"Introducir el t\xedtulo del Componente A","Click to enter Component B title":"Introducir el t\xedtulo del Componente B","Click to enter Component C title":"Introducir el t\xedtulo del Componente C","Click to enter Plot title":"Introducir el t\xedtulo de la Gr\xe1fica","Click to enter X axis title":"Introducir el t\xedtulo del eje X","Click to enter Y axis title":"Introducir el t\xedtulo del eje Y","Click to enter radial axis title":"Introducir el t\xedtulo del eje radial","Compare data on hover":"Comparar datos al pasar por encima","Double-click on legend to isolate one trace":"Haga doble-clic en la leyenda para aislar una traza","Double-click to zoom back out":"Haga doble-clic para restaurar la escala","Download plot as a png":"Descargar gr\xe1fica como png","Download plot":"Descargar gr\xe1fica","Edit in Chart Studio":"Editar en Chart Studio","IE only supports svg. Changing format to svg.":"IE solo soporta svg. Cambiando formato a svg.","Lasso Select":"Seleccionar con lazo","Orbital rotation":"Rotaci\xf3n esf\xe9rica",Pan:"Modo Panor\xe1mica","Produced with Plotly":"Hecho con Plotly",Reset:"Reiniciar","Reset axes":"Reiniciar ejes","Reset camera to default":"Restaurar c\xe1mara predeterminada","Reset camera to last save":"Restaurar anterior c\xe1mara","Reset view":"Restaurar vista","Reset views":"Restaurar vistas","Show closest data on hover":"Mostrar el dato m\xe1s cercano al pasar por encima","Snapshot succeeded":"La captura de la instant\xe1nea finaliz\xf3 correctamente","Sorry, there was a problem downloading your snapshot!":"\xa1La descarga de la instant\xe1nea fall\xf3!","Taking snapshot - this may take a few seconds":"Capturando una instant\xe1nea - podr\xeda tardar unos segundos","Toggle Spike Lines":"Mostrar/Ocultar Gu\xedas","Toggle show closest data on hover":"Activar/Desactivar mostrar el dato m\xe1s cercano al pasar por encima","Turntable rotation":"Rotaci\xf3n plana",Zoom:"Modo Ampliar/Reducir","Zoom in":"Ampliar","Zoom out":"Reducir","close:":"cierre:","high:":"alza:","incoming flow count:":"flujo de entrada:","kde:":"edp:","lat:":"lat:","lon:":"lon:","low:":"baja:","lower fence:":"l\xedmite inferior:","max:":"m\xe1x:","mean \xb1 \u03c3:":"media \xb1 \u03c3:","mean:":"media:","median:":"mediana:","min:":"m\xedn:","new text":"nuevo texto","open:":"apertura:","outgoing flow count:":"flujo de salida:","q1:":"q1:","q3:":"q3:","source:":"fuente:","target:":"destino:",trace:"traza","upper fence:":"l\xedmite superior:"},format:{days:["Domingo","Lunes","Martes","Mi\xe9rcoles","Jueves","Viernes","S\xe1bado"],shortDays:["Dom","Lun","Mar","Mi\xe9","Jue","Vie","S\xe1b"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],shortMonths:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],date:"%d/%m/%Y",decimal:",",thousands:" "}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-it.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"it",dictionary:{Autoscale:"Scala automaticamente","Box Select":"Selezione box","Click to enter Colorscale title":"Clicca per inserire un titolo alla scala di colori","Click to enter Component A title":"Clicca per inserire un titolo al componente A","Click to enter Component B title":"Clicca per inserire un titolo al componente B","Click to enter Component C title":"Clicca per inserire un titolo al componente C","Click to enter Plot title":"Clicca per inserire un titolo al grafico","Click to enter X axis title":"Clicca per inserire un titolo all'asse X","Click to enter Y axis title":"Clicca per inserire un titolo all'asse Y","Click to enter radial axis title":"Clicca per inserire un titolo per l' asse radiale","Compare data on hover":"Paragona i dati al passaggio del mouse","Double-click on legend to isolate one trace":"Doppio click per isolare i dati di una traccia","Double-click to zoom back out":"Doppio click per tornare allo zoom iniziale","Download plot as a png":"Scarica il grafico come immagine png","Download plot":"Scarica il grafico","Edit in Chart Studio":"Modifica in Chart Studio","IE only supports svg. Changing format to svg.":"IE supporta solo svg. Modifica formato in svg.","Lasso Select":"Selezione lazo","Orbital rotation":"Rotazione orbitale",Pan:"Sposta","Produced with Plotly":"Creato con Plotly",Reset:"Reset","Reset axes":"Resetta gli assi","Reset camera to default":"Reimposta la camera ai valori predefiniti","Reset camera to last save":"Reimposta la camera all' ultimo salvataggio","Reset view":"Reimposta la vista","Reset views":"Reimposta le viste","Show closest data on hover":"Mostra i dati pi\xf9 vicini al passaggio del mouse","Snapshot succeeded":"Screenshot creato con successo","Sorry, there was a problem downloading your snapshot!":"Si \xe8 verificato un errore durante la creazione dello screenshot","Taking snapshot - this may take a few seconds":"Creazione screenshot - potrebbe richiedere qualche secondo",Zoom:"Zoom","Zoom in":"Ingrandisci","Zoom out":"Rimpicciolisci","close:":"chiudi:",trace:"traccia","lat:":"lat.:","lon:":"lon.:","q1:":"q1:","q3:":"q3:","source:":"sorgente:","target:":"target:","max:":"max.:","mean \xb1 \u03c3:":"media \xb1 \u03c3:","mean:":"media:","median:":"mediana:","min:":"min.:","new text:":"Nuovo testo:","upper fence:":"limite superiore:","lower fence:":"limite inferiore:","Turntable rotation":"Rotazione piattaforma","Toggle Spike Lines":"Abilita linee di identificazione","open:":"apri:","high:":"alto:","kde:":"kde:","low:":"basso:","incoming flow count:":"Flusso in entrata:","outgoing flow count:":"Flusso in uscita:","Toggle show closest data on hover":"Abilita mostra i dati pi\xf9 vicini al passaggio del mouse"},format:{days:["Domenica","Luned\xec","Marted\xec","Mercoled\xec","Gioved\xec","Venerd\xec","Sabato"],shortDays:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],shortMonths:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],date:"%d/%m/%Y",decimal:",",thousands:"."}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-sv.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"sv",dictionary:{Autoscale:"Autoskala","Box Select":"V\xe4lj rektangel","Click to enter Colorscale title":"Klicka f\xf6r att ange titel p\xe5 f\xe4rgskala","Click to enter Component A title":"Klicka f\xf6r att ange titel p\xe5 komponent A","Click to enter Component B title":"Klicka f\xf6r att ange titel p\xe5 komponent B","Click to enter Component C title":"Klicka f\xf6r att ange titel p\xe5 komponent C","Click to enter Plot title":"Klicka f\xf6r att ange titel p\xe5 diagram","Click to enter X axis title":"Klicka f\xf6r att ange titel p\xe5 x-axel","Click to enter Y axis title":"Klicka f\xf6r att ange titel p\xe5 y-axel","Click to enter radial axis title":"Klicka f\xf6r att ange titel p\xe5 radiell axel","Compare data on hover":"J\xe4mf\xf6r data n\xe4r muspekaren h\xe5lls \xf6ver","Double-click on legend to isolate one trace":"Dubbelklicka p\xe5 f\xf6rklaringen f\xf6r att visa endast en serie","Double-click to zoom back out":"Dubbelklicka f\xf6r att zooma ut igen","Download plot":"Ladda ner diagram","Download plot as a png":"Ladda ner diagram som png","Edit in Chart Studio":"Editera i Chart Studio","IE only supports svg. Changing format to svg.":"IE st\xf6der enbart svg. Byter format till svg.","Lasso Select":"V\xe4lj lasso","Orbital rotation":"Orbital rotation",Pan:"Panorera","Produced with Plotly":"Skapad med Plotly",Reset:"\xc5terst\xe4ll","Reset axes":"\xc5terst\xe4ll axlar","Reset camera to default":"\xc5terst\xe4ll kamera till standard","Reset camera to last save":"\xc5terst\xe4ll kamera till senast sparad","Reset view":"\xc5terst\xe4ll vy","Reset views":"\xc5terst\xe4ll vyer","Show closest data on hover":"Visa n\xe4rmaste v\xe4rde n\xe4r muspekaren h\xe5lls \xf6ver","Snapshot succeeded":"Bild skapad","Sorry, there was a problem downloading your snapshot!":"Tyv\xe4rr gick n\xe5got fel vid nedladdning av bild","Taking snapshot - this may take a few seconds":"Skapar bild - detta kan ta n\xe5gra sekunder","Toggle Spike Lines":"Aktivera/Inaktivera topplinjer","Toggle show closest data on hover":"Aktivera/Inaktivera visa n\xe4rmaste v\xe4rde n\xe4r muspekaren h\xe5lls \xf6ver","Turntable rotation":"Platt rotation",Zoom:"Zooma","Zoom in":"Zooma in","Zoom out":"Zooma ut","close:":"st\xe4ngning:","concentration:":"koncentration:","high:":"h\xf6g:","incoming flow count:":"inkommande fl\xf6de summering:","kde:":"kde:","lat:":"lat:","lon:":"lon:","low:":"l\xe5g:","lower fence:":"undre gr\xe4ns:","max:":"max:","mean \xb1 \u03c3:":"medel \xb1 \u03c3:","mean:":"medel:","median:":"median:","min:":"min:","new text":"ny text","open:":"\xf6ppning:","outgoing flow count:":"utg\xe5ende fl\xf6de summering:","q1:":"q1:","q3:":"q3:","source:":"k\xe4lla:","target:":"m\xe5l:",trace:"serie","upper fence:":"\xf6vre gr\xe4ns:"},format:{days:["S\xf6ndag","M\xe5ndag","Tisdag","Onsdag","Torsdag","Fredag","L\xf6rdag"],shortDays:["S\xf6n","M\xe5n","Tis","Ons","Tor","Fre","L\xf6r"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],shortMonths:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-pt-pt.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"pt-PT",dictionary:{Autoscale:"Escala autom\xe1tica","Box Select":"Sele\xe7\xe3o retangular","Click to enter Colorscale title":"Clique para editar o t\xedtulo da escala de cor","Click to enter Component A title":"Clique para editar o t\xedtulo do Componente A","Click to enter Component B title":"Clique para editar o t\xedtulo do Componente B","Click to enter Component C title":"Clique para editar o t\xedtulo do Componente C","Click to enter Plot title":"Clique para editar o t\xedtulo do Gr\xe1fico","Click to enter X axis title":"Clique para editar o t\xedtulo do eixo X","Click to enter Y axis title":"Clique para editar o t\xedtulo do eixo Y","Click to enter radial axis title":"Clique para editar o t\xedtulo do eixo radial","Compare data on hover":"Comparar dados ao pairar","Double-click on legend to isolate one trace":"Duplo clique na legenda para isolar uma s\xe9rie","Double-click to zoom back out":"Duplo clique para reverter amplia\xe7\xe3o","Download plot as a png":"Baixar gr\xe1fico como imagem (png)","Download plot":"Baixar gr\xe1fico","Edit in Chart Studio":"Editar no Chart Studio","IE only supports svg. Changing format to svg.":"IE suporta apenas svg. Alterando formato para svg","Lasso Select":"Sele\xe7\xe3o de la\xe7o","Orbital rotation":"Rota\xe7\xe3o orbital",Pan:"Mover","Produced with Plotly":"Criado com Plotly",Reset:"Restaurar","Reset axes":"Restaurar eixos","Reset camera to default":"Restaurar c\xe2mera para padr\xe3o","Reset camera to last save":"Restaurar c\xe2mera para \xfaltima grava\xe7\xe3o","Reset view":"Restaurar vista","Reset views":"Restaurar vistas","Show closest data on hover":"Exibir dado mais pr\xf3ximo ao pairar","Snapshot succeeded":"Captura instant\xe2nea com sucesso","Sorry, there was a problem downloading your snapshot!":"Desculpe, houve um problema no download de sua captura instant\xe2nea!","Taking snapshot - this may take a few seconds":"Efetuando captura instant\xe2nea - isso pode demorar alguns segundos","Toggle Spike Lines":"Habilitar/desabilitar triangula\xe7\xe3o de linhas","Toggle show closest data on hover":"Habilitar/desabilitar exibi\xe7\xe3o de dado mais pr\xf3ximo ao pairar","Turntable rotation":"Rodar",Zoom:"Ampliar","Zoom in":"Aumentar Amplia\xe7\xe3o","Zoom out":"Reduzir Amplia\xe7\xe3o",close:"fechar",high:"alta","incoming flow count":"contagem de fluxo de entrada",kde:"kde",lat:"latitude",lon:"longitude",low:"baixa","lower fence":"limite inferior",max:"m\xe1ximo","mean \xb1 \u03c3":"m\xe9dia \xb1 \u03c3",mean:"m\xe9dia",median:"mediana",min:"m\xednimo","new text":"novo texto",open:"abrir","outgoing flow count":"contagem de fluxo de sa\xedda",q1:"q1",q3:"q3",source:"origem",target:"destino",trace:"s\xe9rie","upper fence":"limite superior"},format:{days:["domingo","segunda-feira","ter\xe7a-feira","quarta-feira","quinta-feira","sexta-feira","s\xe1bado"],shortDays:["Dom","Seg","Ter","Qua","Qui","Sex","S\xe1b"],months:["Janeiro","Fevereiro","Mar\xe7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],shortMonths:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-pt-br.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"pt-BR",dictionary:{Autoscale:"Escala autom\xe1tica","Box Select":"Sele\xe7\xe3o retangular","Click to enter Colorscale title":"Clique para editar o t\xedtulo da escala de cor","Click to enter Component A title":"Clique para editar o t\xedtulo do Componente A","Click to enter Component B title":"Clique para editar o t\xedtulo do Componente B","Click to enter Component C title":"Clique para editar o t\xedtulo do Componente C","Click to enter Plot title":"Clique para editar o t\xedtulo do Gr\xe1fico","Click to enter X axis title":"Clique para editar o t\xedtulo do eixo X","Click to enter Y axis title":"Clique para editar o t\xedtulo do eixo Y","Click to enter radial axis title":"Clique para editar o t\xedtulo do eixo radial","Compare data on hover":"Comparar dados ao pairar","Double-click on legend to isolate one trace":"Duplo clique na legenda para isolar uma s\xe9rie","Double-click to zoom back out":"Duplo clique para reverter zoom","Download plot as a png":"Fazer download do gr\xe1fico como imagem (png)","Download plot":"Fazer download do gr\xe1fico","Edit in Chart Studio":"Editar no Chart Studio","IE only supports svg. Changing format to svg.":"IE suporta apenas svg. Alterando formato para svg","Lasso Select":"Sele\xe7\xe3o de la\xe7o","Orbital rotation":"Rota\xe7\xe3o orbital",Pan:"Mover","Produced with Plotly":"Criado com o Plotly",Reset:"Restaurar","Reset axes":"Restaurar eixos","Reset camera to default":"Restaurar c\xe2mera para padr\xe3o","Reset camera to last save":"Restaurar c\xe2mera para \xfaltima salva","Reset view":"Restaurar vis\xe3o","Reset views":"Restaurar vis\xf5es","Show closest data on hover":"Exibir dado mais pr\xf3ximo ao pairar","Snapshot succeeded":"Captura instant\xe2nea completa","Sorry, there was a problem downloading your snapshot!":"Desculpe, houve um problema no download de sua captura instant\xe2nea!","Taking snapshot - this may take a few seconds":"Efetuando captura instant\xe2nea - isso pode levar alguns instantes","Toggle Spike Lines":"Habilitar/desabilitar triangula\xe7\xe3o de linhas","Toggle show closest data on hover":"Habilitar/desabilitar exibi\xe7\xe3o de dado mais pr\xf3ximo ao pairar","Turntable rotation":"Rota\xe7\xe3o de mesa",Zoom:"Zoom","Zoom in":"Ampliar zoom","Zoom out":"Reduzir zoom",close:"fechamento",high:"alta","incoming flow count":"contagem de fluxo de entrada",kde:"kde",lat:"latitude",lon:"longitude",low:"baixa","lower fence":"limite inferior",max:"m\xe1ximo","mean \xb1 \u03c3":"m\xe9dia \xb1 \u03c3",mean:"m\xe9dia",median:"mediana",min:"m\xednimo","new text":"novo texto",open:"abertura","outgoing flow count":"contagem de fluxo de sa\xedda",q1:"q1",q3:"q3",source:"origem",target:"destino",trace:"s\xe9rie","upper fence":"limite superior"},format:{days:["Domingo","Segunda-feira","Ter\xe7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\xe1bado"],shortDays:["Dom","Seg","Ter","Qua","Qui","Sex","S\xe1b"],months:["Janeiro","Fevereiro","Mar\xe7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],shortMonths:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],date:"%d/%m/%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /.github/workflows/rhub.yaml: -------------------------------------------------------------------------------- 1 | # R-hub's generic GitHub Actions workflow file. It's canonical location is at 2 | # https://github.com/r-hub/actions/blob/v1/workflows/rhub.yaml 3 | # You can update this file to a newer version using the rhub2 package: 4 | # 5 | # rhub::rhub_setup() 6 | # 7 | # It is unlikely that you need to modify this file manually. 8 | 9 | name: R-hub 10 | run-name: "${{ github.event.inputs.id }}: ${{ github.event.inputs.name || format('Manually run by {0}', github.triggering_actor) }}" 11 | 12 | on: 13 | workflow_dispatch: 14 | inputs: 15 | config: 16 | description: 'A comma separated list of R-hub platforms to use.' 17 | type: string 18 | default: 'linux,windows,macos' 19 | name: 20 | description: 'Run name. You can leave this empty now.' 21 | type: string 22 | id: 23 | description: 'Unique ID. You can leave this empty now.' 24 | type: string 25 | 26 | jobs: 27 | 28 | setup: 29 | runs-on: ubuntu-latest 30 | outputs: 31 | containers: ${{ steps.rhub-setup.outputs.containers }} 32 | platforms: ${{ steps.rhub-setup.outputs.platforms }} 33 | 34 | steps: 35 | # NO NEED TO CHECKOUT HERE 36 | - uses: r-hub/actions/setup@v1 37 | with: 38 | config: ${{ github.event.inputs.config }} 39 | id: rhub-setup 40 | 41 | linux-containers: 42 | needs: setup 43 | if: ${{ needs.setup.outputs.containers != '[]' }} 44 | runs-on: ubuntu-latest 45 | name: ${{ matrix.config.label }} 46 | strategy: 47 | fail-fast: false 48 | matrix: 49 | config: ${{ fromJson(needs.setup.outputs.containers) }} 50 | container: 51 | image: ${{ matrix.config.container }} 52 | 53 | steps: 54 | - uses: r-hub/actions/checkout@v1 55 | - uses: r-hub/actions/platform-info@v1 56 | with: 57 | token: ${{ secrets.RHUB_TOKEN }} 58 | job-config: ${{ matrix.config.job-config }} 59 | - uses: r-hub/actions/setup-deps@v1 60 | with: 61 | token: ${{ secrets.RHUB_TOKEN }} 62 | job-config: ${{ matrix.config.job-config }} 63 | - uses: r-hub/actions/run-check@v1 64 | with: 65 | token: ${{ secrets.RHUB_TOKEN }} 66 | job-config: ${{ matrix.config.job-config }} 67 | 68 | other-platforms: 69 | needs: setup 70 | if: ${{ needs.setup.outputs.platforms != '[]' }} 71 | runs-on: ${{ matrix.config.os }} 72 | name: ${{ matrix.config.label }} 73 | strategy: 74 | fail-fast: false 75 | matrix: 76 | config: ${{ fromJson(needs.setup.outputs.platforms) }} 77 | 78 | steps: 79 | - uses: r-hub/actions/checkout@v1 80 | - uses: r-hub/actions/setup-r@v1 81 | with: 82 | job-config: ${{ matrix.config.job-config }} 83 | token: ${{ secrets.RHUB_TOKEN }} 84 | - uses: r-hub/actions/platform-info@v1 85 | with: 86 | token: ${{ secrets.RHUB_TOKEN }} 87 | job-config: ${{ matrix.config.job-config }} 88 | - uses: r-hub/actions/setup-deps@v1 89 | with: 90 | job-config: ${{ matrix.config.job-config }} 91 | token: ${{ secrets.RHUB_TOKEN }} 92 | - uses: r-hub/actions/run-check@v1 93 | with: 94 | job-config: ${{ matrix.config.job-config }} 95 | token: ${{ secrets.RHUB_TOKEN }} 96 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-fr.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"fr",dictionary:{Autoscale:"\xc9chelle automatique","Box Select":"S\xe9lection rectangulaire","Click to enter Colorscale title":"Ajouter un titre \xe0 l'\xe9chelle de couleurs","Click to enter Component A title":"Ajouter un titre \xe0 la composante A","Click to enter Component B title":"Ajouter un titre \xe0 la composante B","Click to enter Component C title":"Ajouter un titre \xe0 la composante C","Click to enter Plot title":"Ajouter un titre au graphique","Click to enter X axis title":"Ajouter un titre \xe0 l'axe des x","Click to enter Y axis title":"Ajouter un titre \xe0 l'axe des y","Click to enter radial axis title":"Ajouter un titre \xe0 l'axe radial","Compare data on hover":"Comparaison entre donn\xe9es en survol","Double-click on legend to isolate one trace":"Double-cliquer sur la l\xe9gende pour isoler une s\xe9rie","Double-click to zoom back out":"Double-cliquer pour d\xe9zoomer","Download plot as a png":"T\xe9l\xe9charger le graphique en fichier PNG","Download plot":"T\xe9l\xe9charger le graphique","Edit in Chart Studio":"\xc9diter le graphique sur Chart Studio","IE only supports svg. Changing format to svg.":"IE ne permet que les conversions en SVG. Conversion en SVG en cours.","Lasso Select":"S\xe9lection lasso","Orbital rotation":"Rotation orbitale",Pan:"Translation","Produced with Plotly":"G\xe9n\xe9r\xe9 avec Plotly",Reset:"R\xe9initialiser","Reset axes":"R\xe9initialiser les axes","Reset camera to default":"R\xe9gler la cam\xe9ra \xe0 sa valeur d\xe9faut","Reset camera to last save":"R\xe9gler la cam\xe9ra \xe0 sa valeur sauvegard\xe9e","Reset view":"R\xe9initialiser","Reset views":"R\xe9initialiser","Show closest data on hover":"Donn\xe9es les plus proches en survol","Snapshot succeeded":"Conversion r\xe9ussie","Sorry, there was a problem downloading your snapshot!":"D\xe9sol\xe9, un probl\xe8me est survenu lors du t\xe9l\xe9chargement de votre graphique","Taking snapshot - this may take a few seconds":"Conversion en cours, ceci peut prendre quelques secondes",Zoom:"Zoom","Zoom in":"Zoom int\xe9rieur","Zoom out":"Zoom ext\xe9rieur","close:":"fermeture :",trace:"s\xe9rie","lat:":"lat. :","lon:":"lon. :","q1:":"q1 :","q3:":"q3 :","source:":"source :","target:":"embouchure :","lower fence:":"cl\xf4ture sup\xe9rieure :","upper fence:":"cl\xf4ture inf\xe9rieure :","max:":"max. :","mean \xb1 \u03c3:":"moyenne \xb1 \u03c3 :","mean:":"moyenne :","median:":"m\xe9diane :","min:":"min. :","new text":"nouveau texte","Turntable rotation":"Rotation planaire","Toggle Spike Lines":"Activer/d\xe9sactiver les pics","open:":"ouverture :","high:":"haut :","low:":"bas :","Toggle show closest data on hover":"Activer/d\xe9sactiver le survol","incoming flow count:":"flux entrant :","outgoing flow count:":"flux sortant :","kde:":"est. par noyau :"},format:{days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],shortDays:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Janvier","F\xe9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\xfbt","Septembre","Octobre","Novembre","D\xe9cembre"],shortMonths:["Jan","F\xe9v","Mar","Avr","Mai","Jun","Jul","Ao\xfb","Sep","Oct","Nov","D\xe9c"],date:"%d/%m/%Y",decimal:",",thousands:" ",year:"%Y",month:"%b %Y",dayMonth:"%-d %b",dayMonthYear:"%-d %b %Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-cs.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"cs",dictionary:{Autoscale:"Auto rozsah","Box Select":"Obd\xe9ln\xedkov\xfd v\xfdb\u011br","Click to enter Colorscale title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu barevn\xe9 \u0161k\xe1ly","Click to enter Component A title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu komponenty A","Click to enter Component B title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu komponenty B","Click to enter Component C title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu komponenty C","Click to enter Plot title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu grafu","Click to enter X axis title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu osy X","Click to enter Y axis title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu osy Y","Click to enter radial axis title":"Klikn\u011bte pro zad\xe1n\xed n\xe1zvu radi\xe1ln\xed osy","Compare data on hover":"Porovnat hodnoty p\u0159i najet\xed my\u0161\xed","Double-click on legend to isolate one trace":"Dvojklikem na legendu izolujete jedinou datovou sadu","Double-click to zoom back out":"Dvojklikem vr\xe1t\xedte zv\u011bt\u0161en\xed","Download plot as a png":"Ulo\u017eit jako PNG","Download plot":"Ulo\u017eit","Edit in Chart Studio":"Editovat v Chart Studio","IE only supports svg. Changing format to svg.":"IE podporuje pouze SVG form\xe1t. Zm\u011bn\u011bno na SVG.","Lasso Select":"Vyb\u011br lasem","Orbital rotation":"Rotace (orbit\xe1ln\xed)",Pan:"Posunovat","Produced with Plotly":"Vytvo\u0159eno pomoc\xed Plotly",Reset:"Obnovit nastaven\xed","Reset axes":"Obnovit nastaven\xed os","Reset camera to default":"Obnovit nastaven\xed kamery na v\xfdchoz\xed stav","Reset camera to last save":"Obnovit nastaven\xed kamery na posledn\xed ulo\u017een\xfd stav","Reset view":"Obnovit nastaven\xed pohledu","Reset views":"Obnovit nastaven\xed pohled\u016f","Show closest data on hover":"Zobrazit najbli\u017e\u0161\xed hodnotu p\u0159i najet\xed my\u0161\xed","Snapshot succeeded":"Sn\xedmek vytvo\u0159en","Sorry, there was a problem downloading your snapshot!":"Omlouv\xe1me se, ale do\u0161lo k chyb\u011b stahov\xe1n\xed sn\xedmku!","Taking snapshot - this may take a few seconds":"Vytv\xe1\u0159\xed se sn\xedmek - m\u016f\u017ee zabrat p\xe1r vte\u0159in",Zoom:"Zv\u011bt\u0161en\xed","Zoom in":"Zv\u011bt\u0161it","Zoom out":"Zmen\u0161it","close:":"zav\u0159\xedt:",trace:"datov\xe1 sada","lat:":"Lat.:","lon:":"Lon.:","q1:":"q1:","q3:":"q3:","source:":"zdroj:","target:":"c\xedl:","lower fence:":"doln\xed limit:","upper fence:":"horn\xed limit:","max:":"max.:","mean \xb1 \u03c3:":"pr\u016fm\u011br \xb1 \u03c3:","mean:":"pr\u016fm\u011br:","median:":"medi\xe1n:","min:":"min.:","new text":"nov\xfd text","Turntable rotation":"Rotace (oto\u010dn\xfd st\u016fl)","Toggle Spike Lines":"P\u0159epnout zobrazen\xed vod\xedc\xedch \u010dar","open:":"otev\u0159\xedt:","high:":"horn\xed:","low:":"doln\xed:","Toggle show closest data on hover":"P\u0159epnout zobrazov\xe1n\xed nejbli\u017e\u0161i hodnoty p\u0159i najet\xed my\u0161\xed","incoming flow count:":"po\u010det dat na vstupu:","outgoing flow count:":"po\u010det dat na v\xfdstupu:","kde:":"kde:"},format:{days:["ned\u011ble","pond\u011bl\xed","\xfater\xfd","st\u0159eda","\u010dtvrtek","p\xe1tek","sobota"],shortDays:["ne","po","\xfat","st","\u010dt","p\xe1","so"],months:["leden","\xfanor","b\u0159ezen","duben","kv\u011bten","\u010derven","\u010dervenec","srpen","z\xe1\u0159\xed","\u0159\xedjen","listopad","prosinec"],shortMonths:["led","\xfano","b\u0159e","dub","kv\u011b","\u010der","\u010dvc","srp","z\xe1\u0159","\u0159\xedj","lis","pro"],date:"%d.%m.%Y"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-zh-cn.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"zh-CN",dictionary:{Autoscale:"\u81ea\u52a8\u7f29\u653e","Box Select":"\u77e9\u5f62\u6846\u9009","Click to enter Colorscale title":"\u70b9\u51fb\u8f93\u5165\u8272\u9636\u7684\u6807\u9898","Click to enter Component A title":"\u70b9\u51fb\u8f93\u5165\u7ec4\u4ef6A\u7684\u6807\u9898","Click to enter Component B title":"\u70b9\u51fb\u8f93\u5165\u7ec4\u4ef6B\u7684\u6807\u9898","Click to enter Component C title":"\u70b9\u51fb\u8f93\u5165\u7ec4\u4ef6C\u7684\u6807\u9898","Click to enter Plot title":"\u70b9\u51fb\u8f93\u5165\u56fe\u8868\u7684\u6807\u9898","Click to enter X axis title":"\u70b9\u51fb\u8f93\u5165X\u8f74\u7684\u6807\u9898","Click to enter Y axis title":"\u70b9\u51fb\u8f93\u5165Y\u8f74\u7684\u6807\u9898","Compare data on hover":"\u60ac\u505c\u65f6\u6bd4\u8f83\u6570\u636e","Double-click on legend to isolate one trace":"\u53cc\u51fb\u56fe\u4f8b\u6765\u7a81\u663e\u5bf9\u5e94\u8f68\u8ff9","Double-click to zoom back out":"\u53cc\u51fb\u8fd4\u56de\u7f29\u5c0f\u663e\u793a","Download plot as a png":"\u4e0b\u8f7d\u56fe\u8868\u4e3aPNG\u683c\u5f0f","Download plot":"\u4e0b\u8f7d\u56fe\u8868","Edit in Chart Studio":"\u5728Chart Studio\u4e2d\u7f16\u8f91","IE only supports svg. Changing format to svg.":"IE\u53ea\u652f\u6301SVG\u3002\u8f6c\u6362\u683c\u5f0f\u4e3aSVG\u3002","Lasso Select":"\u5957\u7d22\u9009\u62e9","Orbital rotation":"\u8f68\u9053\u65cb\u8f6c",Pan:"\u5e73\u79fb","Produced with Plotly":"\u7531Plotly\u751f\u6210",Reset:"\u91cd\u7f6e","Reset axes":"\u91cd\u7f6e\u8f74","Reset camera to default":"\u91cd\u7f6e\u955c\u5934\u89c6\u89d2\u4e3a\u9ed8\u8ba4\u72b6\u6001","Reset camera to last save":"\u91cd\u7f6e\u955c\u5934\u89c6\u89d2\u4e3a\u4e0a\u6b21\u4fdd\u5b58\u72b6\u6001","Reset view":"\u91cd\u7f6e\u89c6\u56fe","Reset views":"\u91cd\u7f6e\u89c6\u56fe","Show closest data on hover":"\u60ac\u505c\u65f6\u663e\u793a\u6700\u8fd1\u7684\u6570\u636e","Snapshot succeeded":"\u751f\u6210\u5feb\u7167\u6210\u529f","Sorry, there was a problem downloading your snapshot!":"\u62b1\u6b49\uff0c\u4e0b\u8f7d\u5feb\u7167\u51fa\u73b0\u95ee\u9898\uff01","Taking snapshot - this may take a few seconds":"\u6b63\u5728\u751f\u6210\u5feb\u7167 - \u53ef\u80fd\u9700\u8981\u51e0\u79d2\u949f",Zoom:"\u7f29\u653e","Zoom in":"\u653e\u5927","Zoom out":"\u7f29\u5c0f","close:":"\u5173\u95ed:",trace:"\u8e2a\u8ff9:","lat:":"\u7eac\u5ea6:","lon:":"\u7ecf\u5ea6:","q1:":"\u7b2c\u4e00\u56db\u5206\u4f4d\u6570:","q3:":"\u7b2c\u4e09\u56db\u5206\u4f4d\u6570:","source:":"\u6e90:","target:":"\u76ee\u6807:","lower fence:":"\u5185\u4fa7\u680f(lower fence):","upper fence:":"\u5916\u4fa7\u680f(upper fence):","max:":"\u6700\u5927\u503c:","mean \xb1 \u03c3:":"\u5e73\u5747\u6570 \xb1 \u6807\u51c6\u5dee\u03c3:","mean:":"\u5e73\u5747\u6570:","median:":"\u4e2d\u4f4d\u6570:","min:":"\u6700\u5c0f\u503c:","Turntable rotation":"\u65cb\u8f6c\u8f6c\u76d8:","Toggle Spike Lines":"\u5207\u6362\u663e\u793a\u6570\u636e\u70b9\u8f85\u52a9\u7ebf(Spike Lines)","open:":"\u6253\u5f00:","high:":"\u9ad8:","low:":"\u4f4e:","Toggle show closest data on hover":"\u5207\u6362\u60ac\u505c\u65f6\u663e\u793a\u6700\u8fd1\u7684\u6570\u636e\u70b9","incoming flow count:":"\u6d41\u5165\u6570\u91cf:","outgoing flow count:":"\u6d41\u51fa\u6570\u91cf:","kde:":"kde:","Click to enter radial axis title":"\u70b9\u51fb\u8f93\u5165\u5f84\u5411\u8f74\u6807\u9898","new text":"\u65b0\u5efa\u6587\u672c"},format:{days:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],shortDays:["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],months:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],shortMonths:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # parcats 5 | 6 | 7 | 8 | [![Codecov test 9 | coverage](https://codecov.io/gh/erblast/parcats/branch/master/graph/badge.svg)](https://app.codecov.io/gh/erblast/parcats?branch=master) 10 | [![CRAN 11 | status](https://www.r-pkg.org/badges/version/parcats)](https://CRAN.R-project.org/package=parcats) 12 | [![CRAN_time_from_release](https://www.r-pkg.org/badges/ago/parcats)](https://cran.r-project.org/package=parcats) 13 | [![metacran 14 | downloads](https://cranlogs.r-pkg.org/badges/grand-total/parcats)](https://cran.r-project.org/package=parcats) 15 | [![metacran 16 | downloads](https://cranlogs.r-pkg.org/badges/parcats)](https://cran.r-project.org/package=parcats) 17 | [![R build 18 | status](https://github.com/erblast/parcats/workflows/R-CMD-check/badge.svg)](https://github.com/erblast/parcats/actions) 19 | 20 | 21 | ###### Create ‘plotly.js’ Parallel Categories Diagrams Using this Htmlwidget and ‘easyalluvial’ 22 | 23 | Complex graphical representations of data are best explored using 24 | interactive elements. ‘parcats’ adds interactive graphing capabilities 25 | to the ‘easyalluvial’ package. The ‘plotly.js’ parallel categories 26 | diagrams offer a good framework for creating interactive flow graphs 27 | that allow manual drag and drop sorting of dimensions and categories, 28 | highlighting single flows and displaying mouse over information. The 29 | ‘plotly.js’ dependency is quite heavy and therefore is outsourced into a 30 | separate package. 31 | 32 | ## Installation 33 | 34 | ### CRAN 35 | 36 | ``` r 37 | install.packages('parcats') 38 | ``` 39 | 40 | ### Development Version 41 | 42 | ``` r 43 | 44 | # install.packages("devtools") 45 | devtools::install_github("erblast/parcats") 46 | ``` 47 | 48 | ## easyalluvial 49 | 50 | `parcats` requires an alluvial plot created with `easyalluvial` to 51 | create an interactive parrallel categories diagram. 52 | 53 | - [easyalluvial documentation](https://erblast.github.io/easyalluvial/) 54 | 55 | - [easyalluvial github page](https://github.com/erblast/easyalluvial) 56 | 57 | ## Examples 58 | 59 | ``` r 60 | suppressPackageStartupMessages(require(tidyverse)) 61 | suppressPackageStartupMessages(require(easyalluvial)) 62 | suppressPackageStartupMessages(require(parcats)) 63 | ``` 64 | 65 | ### Shiny Demo 66 | 67 | The shiny demo allows you to interactively explore the parameters of 68 | `alluvial_wide()` and `parcats()` 69 | 70 | ``` r 71 | parcats_demo() 72 | ``` 73 | 74 | ### Live Widget 75 | 76 | The Htmlwidgets cannot be embedded in the `README.md` file. Check out 77 | the [Live Widget 78 | here](https://erblast.github.io/parcats/articles/parcats.html). 79 | 80 | ### Parcats from alluvial from data in wide format 81 | 82 | ``` r 83 | p <- alluvial_wide(mtcars2, max_variables = 5) 84 | 85 | parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 86 | ``` 87 | 88 | ![](https://raw.githubusercontent.com/erblast/parcats/master/man/figures/demo1.gif) 89 | 90 | ### Parcats from model response alluvial 91 | 92 | Machine Learning models operate in a multidimensional space and their 93 | response is hard to visualise. Model response and partial dependency 94 | plots attempt to visualise ML models in a two dimensional space. Using 95 | alluvial plots or parrallel categories diagrams we can increase the 96 | number of dimensions. 97 | 98 | - [Visualise model response with alluvial 99 | plots](https://www.datisticsblog.com/2019/04/visualising-model-response-with-easyalluvial/) 100 | 101 | Here we see the response of a random forest model if we vary the three 102 | variables with the highest importance while keeping all other features 103 | at their median/mode value. 104 | 105 | ``` r 106 | df <- select(mtcars2, -ids ) 107 | m <- randomForest::randomForest( disp ~ ., df) 108 | imp <- m$importance 109 | dspace <- get_data_space(df, imp, degree = 3) 110 | pred <- predict(m, newdata = dspace) 111 | p <- alluvial_model_response(pred, dspace, imp, degree = 3) 112 | 113 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 114 | ``` 115 | 116 | ![](https://raw.githubusercontent.com/erblast/parcats/master/man/figures/demo2.gif) 117 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ko.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ko",dictionary:{Autoscale:"\uc790\ub3d9 \ud06c\uae30\uc9c0\uc815","Box Select":"\ubc15\uc2a4 \uc120\ud0dd","Click to enter Colorscale title":"Colorscale \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter Component A title":"A\ub370\uc774\ud130\uc758 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter Component B title":"B\ub370\uc774\ud130\uc758 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter Component C title":"C\ub370\uc774\ud130\uc758 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter Plot title":"\ucc28\ud2b8 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter X axis title":"X\ucd95 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter Y axis title":"Y\ucd95 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Click to enter radial axis title":"\uc6d0\ud615 \ucd95 \uc81c\ubaa9\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ud074\ub9ad\ud558\uc138\uc694","Compare data on hover":"\ub9c8\uc6b0\uc2a4\ub97c \uc62c\ub9ac\uba74 \ub370\uc774\ud130\uc640 \ube44\uad50\ud569\ub2c8\ub2e4","Double-click on legend to isolate one trace":"\ubc94\ub840\ub97c \ub354\ube14 \ud074\ub9ad\ud558\uc5ec \ud558\ub098\uc758 \ud2b8\ub808\uc774\uc2a4\ub97c \ubd84\ub9ac\ud569\ub2c8\ub2e4","Double-click to zoom back out":"\ub354\ube14 \ud074\ub9ad\ud558\uc5ec \uc90c\uc744 \ud574\uc81c\ud569\ub2c8\ub2e4","Download plot as a png":".png \uc774\ubbf8\uc9c0 \ud30c\uc77c\ub85c \ucc28\ud2b8\ub97c \ub2e4\uc6b4\ub85c\ub4dc \ud569\ub2c8\ub2e4","Download plot":"\ucc28\ud2b8\ub97c \ub2e4\uc6b4\ub85c\ub4dc \ud569\ub2c8\ub2e4","Edit in Chart Studio":"Chart Studio\ub97c \uc218\uc815\ud569\ub2c8\ub2e4","IE only supports svg. Changing format to svg.":"IE\ub294 svg\ub9cc\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \ud3ec\ub9f7\uc744 svg\ub85c \ubcc0\uacbd\ud558\uc138\uc694","Lasso Select":"\uc62c\uac00\ubbf8 \uc120\ud0dd","Orbital rotation":"\uada4\ub3c4 \uc218\uc815",Pan:"\uc774\ub3d9","Produced with Plotly":"Plotly \uc81c\uacf5",Reset:"\ucd08\uae30\ud654","Reset axes":"\ucd95 \ucd08\uae30\ud654","Reset camera to default":"camera\ub97c \uae30\ubcf8\uac12\uc73c\ub85c \ucd08\uae30\ud654","Reset camera to last save":"camera\ub97c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc800\uc7a5\ud55c \uac12\uc73c\ub85c \ucd08\uae30\ud654","Reset view":"view \ucd08\uae30\ud654","Reset views":"views \ucd08\uae30\ud654","Show closest data on hover":"\ub9c8\uc6b0\uc2a4\ub97c \uc62c\ub9ac\uba74 \uadfc\uc811\ud55c \ub370\uc774\ud130\ub97c \ubcf4\uc774\uae30","Snapshot succeeded":"Snapshot \uc131\uacf5","Sorry, there was a problem downloading your snapshot!":"\uc8c4\uc1a1\ud569\ub2c8\ub2e4, snapshot\uc744 \ub2e4\uc6b4\ub85c\ub4dc \uc911 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!","Taking snapshot - this may take a few seconds":"snapshot \ucc0d\uae30 - \uc218 \ucd08\uac00 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4","Toggle Spike Lines":"\uc2a4\uc704\uce58\ub85c Lines\uc744 \uace0\uc815\ud569\ub2c8\ub2e4","Toggle show closest data on hover":"\uc2a4\uc704\uce58\ub85c \ub9c8\uc6b0\uc2a4\ub97c \uc62c\ub838\uc744 \ub54c \uac00\uc7a5 \uac00\uae4c\uc6b4 \ub370\uc774\ud130\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4","Turntable rotation":"Turntable \ud68c\uc804",Zoom:"\ud655\ub300(\uc90c)","Zoom in":"\ud655\ub300(\uc90c \uc778)","Zoom out":"\ucd95\uc18c(\uc90c \uc544\uc6c3)",close:"\ub2eb\uae30",high:"\ub192\uc74c",low:"\ub0ae\uc74c",max:"\ucd5c\ub313\uac12","mean \xb1 \u03c3":"\ud3c9\uade0 \xb1 \u03c3",mean:"\ud3c9\uade0",median:"\uc911\uac04 \uac12",min:"\ucd5c\uc19f\uac12","new text":"\uc0c8\ub85c\uc6b4 \ud14d\uc2a4\ud2b8",open:"\uc5f4\uae30",q1:"q1",q3:"q3",source:"\uc18c\uc2a4",target:"\ud0c0\uac9f"},format:{days:["\uc77c\uc694\uc77c","\uc6d4\uc694\uc77c","\ud654\uc694\uc77c","\uc218\uc694\uc77c","\ubaa9\uc694\uc77c","\uae08\uc694\uc77c","\ud1a0\uc694\uc77c"],shortDays:["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],months:["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"],shortMonths:["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"],date:"%Y-%m-%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /man/parcats.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/parcats.R 3 | \name{parcats} 4 | \alias{parcats} 5 | \title{create plotly parallel categories diagram from alluvial plot} 6 | \usage{ 7 | parcats( 8 | p, 9 | marginal_histograms = TRUE, 10 | data_input = NULL, 11 | imp = TRUE, 12 | width = NULL, 13 | height = NULL, 14 | elementId = NULL, 15 | hoveron = "color", 16 | hoverinfo = "count+probability", 17 | arrangement = "perpendicular", 18 | bundlecolors = TRUE, 19 | sortpaths = "forward", 20 | labelfont = list(size = 24, color = "black"), 21 | tickfont = NULL, 22 | offset_marginal_histograms = 0.7, 23 | offset_imp = 0.9 24 | ) 25 | } 26 | \arguments{ 27 | \item{p}{alluvial plot} 28 | 29 | \item{marginal_histograms}{logical, add marginal histograms, Default: TRUE} 30 | 31 | \item{data_input}{dataframe, data used to create alluvial plot, Default: NULL} 32 | 33 | \item{imp}{dataframe, with not more then two columns one of them numeric 34 | containing importance measures and one character or factor column containing 35 | corresponding variable names as found in training data.} 36 | 37 | \item{width}{integer, htmlwidget width in pixels, Default: NULL} 38 | 39 | \item{height}{integer, htmlwidget height in pixels, Default: NULL} 40 | 41 | \item{elementId}{, htmlwidget elementid, Default: NULL} 42 | 43 | \item{hoveron}{character, one of c('category', 'color', 'dimension'), Sets the 44 | hover interaction mode for the parcats diagram.', 'If `category`, hover 45 | interaction take place per category.', 'If `color`, hover interactions take 46 | place per color per category.', 'If `dimension`, hover interactions take 47 | place across all categories per dimension., Default: 'color'} 48 | 49 | \item{hoverinfo}{character, one of c('count', 'probability', 50 | 'count+probability') set info displayed on mouse hover Default: 51 | 'count+probability'} 52 | 53 | \item{arrangement, }{character, one of c('perpendicular', 'freeform', 'fixed') 54 | 'Sets the drag interaction mode for categories and dimensions.', 'If 55 | `perpendicular`, the categories can only move along a line perpendicular to 56 | the paths.', 'If `freeform`, the categories can freely move on the plane.', 57 | 'If `fixed`, the categories and dimensions are stationary.', Default: 58 | 'perpendicular'} 59 | 60 | \item{bundlecolors}{logical, 'Sort paths so that like colors are bundled 61 | together within each category.', Default: TRUE} 62 | 63 | \item{sortpaths}{character, one of c('forward', 'backward'), 'Sets the path 64 | sorting algorithm.', 'If `forward`, sort paths based on dimension categories 65 | from left to right.', Default: 'forward' 'If `backward`, sort paths based on 66 | dimensions categories from right to left.'} 67 | 68 | \item{labelfont}{list, 'Sets the font for the `dimension` labels.', Default: 69 | list(size = 24, color = 'black')} 70 | 71 | \item{tickfont}{list, Sets the font for the `category` labels.', Default: NULL} 72 | 73 | \item{offset_marginal_histograms}{double, height ratio reserved for parcats 74 | diagram, Default: 0.8} 75 | 76 | \item{offset_imp}{double, width ratio reserved for parcats diagram, Default: 77 | 0.9} 78 | } 79 | \value{ 80 | htmlwidget 81 | } 82 | \description{ 83 | creates an interactive parallel categories diagram from an 'easyalluvial' 84 | plot using the 'plotly.js' library 85 | } 86 | \details{ 87 | most parameters are best left at default values 88 | } 89 | \examples{ 90 | 91 | \donttest{ 92 | library(easyalluvial) 93 | 94 | # alluvial wide --------------------------------- 95 | p = alluvial_wide(mtcars2, max_variables = 5) 96 | 97 | parcats(p, marginal_histograms = FALSE) 98 | 99 | parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 100 | 101 | if(check_pkg_installed("randomForest", raise_error = FALSE)) { 102 | # alluvial for model response -------------------- 103 | df = mtcars2[, ! names(mtcars2) \%in\% 'ids' ] 104 | m = randomForest::randomForest( disp ~ ., df) 105 | imp = m$importance 106 | dspace = get_data_space(df, imp, degree = 3) 107 | pred = predict(m, newdata = dspace) 108 | p = alluvial_model_response(pred, dspace, imp, degree = 3) 109 | 110 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 111 | } 112 | } 113 | 114 | } 115 | \seealso{ 116 | \code{\link[easyalluvial]{alluvial_wide}} 117 | , \code{\link[easyalluvial]{alluvial_long}} 118 | , \code{\link[easyalluvial]{alluvial_model_response}} 119 | , \code{\link[easyalluvial]{alluvial_model_response_caret}} 120 | } 121 | -------------------------------------------------------------------------------- /README.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | always_allow_html: no 4 | editor_options: 5 | chunk_output_type: console 6 | --- 7 | 8 | 9 | 10 | ```{r, echo = FALSE} 11 | knitr::opts_chunk$set( 12 | collapse = TRUE, 13 | comment = "#>", 14 | warning = FALSE, 15 | fig.path = "man/figures/README-" 16 | ) 17 | ``` 18 | 19 | # parcats 20 | 21 | 22 | 23 | [![Codecov test coverage](https://codecov.io/gh/erblast/parcats/branch/master/graph/badge.svg)](https://app.codecov.io/gh/erblast/parcats?branch=master) 24 | [![CRAN status](https://www.r-pkg.org/badges/version/parcats)](https://CRAN.R-project.org/package=parcats) 25 | [![CRAN_time_from_release](https://www.r-pkg.org/badges/ago/parcats)](https://cran.r-project.org/package=parcats) 26 | [![metacran downloads](https://cranlogs.r-pkg.org/badges/grand-total/parcats)](https://cran.r-project.org/package=parcats) 27 | [![metacran downloads](https://cranlogs.r-pkg.org/badges/parcats)](https://cran.r-project.org/package=parcats) 28 | [![R build status](https://github.com/erblast/parcats/workflows/R-CMD-check/badge.svg)](https://github.com/erblast/parcats/actions) 29 | 30 | 31 | ###### Create 'plotly.js' Parallel Categories Diagrams Using this Htmlwidget and 'easyalluvial' 32 | 33 | Complex graphical representations of data are best explored using interactive elements. 34 | 'parcats' adds interactive graphing capabilities to the 'easyalluvial' package. 35 | The 'plotly.js' parallel categories diagrams offer a good framework for 36 | creating interactive flow graphs that allow manual drag and drop sorting of dimensions 37 | and categories, highlighting single flows and displaying mouse over information. The 38 | 'plotly.js' dependency is quite heavy and therefore is outsourced into a separate package. 39 | 40 | ## Installation 41 | 42 | ### CRAN 43 | 44 | ```{r cran, eval = FALSE } 45 | install.packages('parcats') 46 | ``` 47 | 48 | ### Development Version 49 | 50 | 51 | ```{r gh-installation, eval = FALSE} 52 | 53 | # install.packages("devtools") 54 | devtools::install_github("erblast/parcats") 55 | ``` 56 | 57 | ## easyalluvial 58 | 59 | `parcats` requires an alluvial plot created with `easyalluvial` to create an interactive parrallel categories diagram. 60 | 61 | - [easyalluvial documentation](https://erblast.github.io/easyalluvial/) 62 | 63 | - [easyalluvial github page](https://github.com/erblast/easyalluvial) 64 | 65 | 66 | ## Examples 67 | 68 | ```{r} 69 | suppressPackageStartupMessages(require(tidyverse)) 70 | suppressPackageStartupMessages(require(easyalluvial)) 71 | suppressPackageStartupMessages(require(parcats)) 72 | ``` 73 | 74 | ### Shiny Demo 75 | 76 | The shiny demo allows you to interactively explore the parameters of `alluvial_wide()` and `parcats()` 77 | 78 | ```{r eval = FALSE} 79 | parcats_demo() 80 | ``` 81 | 82 | 83 | ### Live Widget 84 | 85 | The Htmlwidgets cannot be embedded in the `README.md` file. Check out the [Live Widget here](https://erblast.github.io/parcats/articles/parcats.html). 86 | 87 | ### Parcats from alluvial from data in wide format 88 | 89 | ```{r eval = FALSE} 90 | p <- alluvial_wide(mtcars2, max_variables = 5) 91 | 92 | parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 93 | 94 | ``` 95 | 96 | ![](https://raw.githubusercontent.com/erblast/parcats/master/man/figures/demo1.gif) 97 | 98 | ### Parcats from model response alluvial 99 | 100 | Machine Learning models operate in a multidimensional space and their response is hard to visualise. Model response and partial dependency plots attempt to visualise ML models in a two dimensional space. Using alluvial plots or parrallel categories diagrams we can increase the number of dimensions. 101 | 102 | - [Visualise model response with alluvial plots](https://www.datisticsblog.com/2019/04/visualising-model-response-with-easyalluvial/) 103 | 104 | Here we see the response of a random forest model if we vary the three variables with the highest importance while keeping all other features at their median/mode value. 105 | 106 | 107 | ```{r eval = FALSE} 108 | df <- select(mtcars2, -ids ) 109 | m <- randomForest::randomForest( disp ~ ., df) 110 | imp <- m$importance 111 | dspace <- get_data_space(df, imp, degree = 3) 112 | pred <- predict(m, newdata = dspace) 113 | p <- alluvial_model_response(pred, dspace, imp, degree = 3) 114 | 115 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 116 | 117 | ``` 118 | 119 | ![](https://raw.githubusercontent.com/erblast/parcats/master/man/figures/demo2.gif) 120 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ja.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ja",dictionary:{Autoscale:"\u81ea\u52d5\u30ba\u30fc\u30e0","Box Select":"\u77e9\u5f62\u9078\u629e","Click to enter Colorscale title":"\u8272\u30b9\u30b1\u30fc\u30eb\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter Component A title":"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8A\u306e\u30bf\u30a4\u30c8\u30eb\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter Component B title":"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8B\u306e\u30bf\u30a4\u30c8\u30eb\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter Component C title":"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8C\u306e\u30bf\u30a4\u30c8\u30eb\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter Plot title":"\u30d7\u30ed\u30c3\u30c8\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter X axis title":"X\u8ef8\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Click to enter Y axis title":"Y\u8ef8\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","Compare data on hover":"\u30db\u30d0\u30fc\u4e2d\u306e\u30c7\u30fc\u30bf\u3092\u6bd4\u8f03","Double-click on legend to isolate one trace":"\u51e1\u4f8b\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u30661\u3064\u306e\u30c8\u30ec\u30fc\u30b9\u3092\u7121\u52b9\u5316\u3057\u307e\u3059","Double-click to zoom back out":"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3067\u30ba\u30fc\u30e0\u3092\u623b\u3057\u307e\u3059","Download plot as a png":"PNG\u30d5\u30a1\u30a4\u30eb\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","Download plot":"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","Edit in Chart Studio":"Chart Studio\u3067\u7de8\u96c6","IE only supports svg. Changing format to svg.":"IE\u306fSVG\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002SVG\u306b\u5909\u63db\u3057\u307e\u3059\u3002","Lasso Select":"\u6295\u3052\u7e04\u9078\u629e","Orbital rotation":"\u8ecc\u9053\u56de\u8ee2",Pan:"\u62e1\u5927","Produced with Plotly":"Plotly\u306b\u3088\u308a\u4f5c\u6210",Reset:"\u30ea\u30bb\u30c3\u30c8","Reset axes":"\u8ef8\u3092\u30ea\u30bb\u30c3\u30c8","Reset camera to default":"\u30ab\u30e1\u30e9\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059","Reset camera to last save":"\u30ab\u30e1\u30e9\u3092\u6700\u5f8c\u306e\u4fdd\u5b58\u72b6\u614b\u306b\u623b\u3059","Reset view":"\u30d3\u30e5\u30fc\u3092\u30ea\u30bb\u30c3\u30c8","Reset views":"\u30d3\u30e5\u30fc\u3092\u30ea\u30bb\u30c3\u30c8","Show closest data on hover":"\u30db\u30d0\u30fc\u6642\u306b\u4e00\u756a\u8fd1\u3044\u30c7\u30fc\u30bf\u3092\u8868\u793a","Snapshot succeeded":"\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306b\u6210\u529f","Sorry, there was a problem downloading your snapshot!":"\u3059\u307f\u307e\u305b\u3093\u3001\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u30a8\u30e9\u30fc\u3067\u3059!","Taking snapshot - this may take a few seconds":"\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u5f71",Zoom:"\u30ba\u30fc\u30e0","Zoom in":"\u62e1\u5927","Zoom out":"\u7e2e\u5c0f","close:":"\u9589\u3058\u308b:",trace:"\u30c8\u30ec\u30fc\u30b9:","lat:":"\u7def\u5ea6:","lon:":"\u7d4c\u5ea6:","q1:":"\u7b2c\u4e00\u56db\u5206\u4f4d\u6570:","q3:":"\u7b2c\u4e09\u56db\u5206\u4f4d\u6570:","source:":"\u30bd\u30fc\u30b9:","target:":"\u30bf\u30fc\u30b2\u30c3\u30c8:","lower fence:":"\u30d5\u30a7\u30f3\u30b9\u4e0b\u9650:","upper fence:":"\u30d5\u30a7\u30f3\u30b9\u4e0a\u9650:","max:":"\u6700\u5927:","mean \xb1 \u03c3:":"\u5e73\u5747 \xb1 \u03c3:","mean:":"\u5e73\u5747:","median:":"\u4e2d\u592e\u5024:","min:":"\u6700\u5c0f:","Turntable rotation":"\u8ef8\u56de\u8ee2:","Toggle Spike Lines":"\u30b9\u30d1\u30a4\u30af\u30e9\u30a4\u30f3\u306e\u30aa\u30f3\u30aa\u30d5","open:":"\u958b\u304f:","high:":"\u9ad8:","low:":"\u4f4e:","Toggle show closest data on hover":"\u30db\u30d0\u30fc\u6642\u306b\u4e00\u756a\u8fd1\u3044\u30c7\u30fc\u30bf\u3092\u8868\u793a\u306e\u30aa\u30f3\u30aa\u30d5","incoming flow count:":"\u6d41\u5165\u30d5\u30ed\u30fc\u30ab\u30a6\u30f3\u30c8:","outgoing flow count:":"\u6d41\u51fa\u30d5\u30ed\u30fc\u30ab\u30a6\u30f3\u30c8:","kde:":"kde:","Click to enter radial axis title":"\u653e\u5c04\u8ef8\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af","new text":"\u65b0\u898f\u30c6\u30ad\u30b9\u30c8"},format:{days:["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"],shortDays:["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],months:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],shortMonths:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],date:"%Y/%m/%d"}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/parcats.js: -------------------------------------------------------------------------------- 1 | 2 | HTMLWidgets.widget({ 3 | name: "parcats", 4 | type: "output", 5 | 6 | initialize: function(el, width, height) { 7 | return {}; 8 | }, 9 | 10 | resize: function(el, width, height, instance) { 11 | if (instance.autosize) { 12 | var width = instance.width || width; 13 | var height = instance.height || height; 14 | Plotly.relayout(el.id, {width: width, height: height}); 15 | } 16 | }, 17 | 18 | renderValue: function(el, x, instance) { 19 | 20 | var data = []; 21 | var layout = []; 22 | var myPlot = document.getElementById(el.id); 23 | 24 | // x.traces is passed as an Object with named elements 25 | // but needs to be converted to array with unnamed elements 26 | for( var key of Object.keys(x.traces)){ 27 | data.push( x.traces[key] ); 28 | } 29 | 30 | 31 | layout = x.layout; 32 | 33 | var shapes = []; 34 | 35 | for( var key of Object.keys(x.shapes)){ 36 | shapes.push( x.shapes[key] ); 37 | } 38 | 39 | var shapes_original = []; 40 | 41 | for( var key of Object.keys(x.shapes_original)){ 42 | shapes_original.push( x.shapes_original[key] ); 43 | } 44 | 45 | layout['shapes'] = shapes; 46 | 47 | Plotly.newPlot(el.id, data, layout, {responsive: true}); 48 | 49 | myPlot.on('plotly_hover', function(data){ 50 | 51 | // this is the proper way too deepcopy object in JS 52 | // before I was passing two versions of the same object 53 | shapes = JSON.parse(JSON.stringify(shapes_original)); 54 | 55 | var curve = data.points[0].curveNumber; 56 | 57 | // curve == 0, is the parcats trace 58 | if( curve == 0 ){ 59 | 60 | for ( var i_data in data.points){ 61 | 62 | var point = data.points[i_data].pointNumber; 63 | 64 | for(var i in x.map_curve[point] ){ 65 | 66 | if( x.map_type[point][i] == 'scatter'){ 67 | 68 | Plotly.restyle(el.id, {fillcolor : x.parcats_cols[point] 69 | // changing of the marker color takes too long 70 | //, line : { color : x.parcats_cols[point] } 71 | //, marker : { color : x.parcats_cols[point] } 72 | } 73 | , parseInt(x.map_curve[point][i]) ); 74 | } 75 | 76 | if( x.map_type[point][i] == 'bar'){ 77 | 78 | Plotly.restyle(el.id, { marker : { color : x.parcats_cols[point] } 79 | } 80 | , parseInt(x.map_curve[point][i]) ); 81 | } 82 | 83 | if( x.map_type[point][i] == 'line'){ 84 | 85 | tr = x.map_curve[point][i]; 86 | 87 | shape_index = x.map_trace_2_shape[tr -1]; 88 | 89 | shapes[shape_index -1 ]['line']['color'] = x.parcats_cols[point]; 90 | 91 | } 92 | 93 | } 94 | 95 | } 96 | } 97 | 98 | var t1 = curve 99 | , t2 = data.points[0].pointNumber 100 | , t3 = x.map_type[t2] 101 | , t4 = x.map_curve[t2] 102 | ; 103 | 104 | // use first title option for debugging 105 | var title = t1 + '_' + t2 + '_' + t3 + '_' + t4 + '_' + x.map_trace_2_shape[12]+ '_' + x.map_trace_2_shape[15]; 106 | var title = ''; 107 | 108 | if(curve == 0){ 109 | Plotly.relayout(el.id, { shapes : shapes 110 | , title : title} ); 111 | } 112 | }); 113 | 114 | myPlot.on('plotly_unhover', function(data){ 115 | 116 | var curve = data.points[0].curveNumber; 117 | 118 | if( curve == 0){ 119 | 120 | for( var i_data in data.points){ 121 | 122 | var point = data.points[i_data].pointNumber; 123 | 124 | for(var i in x.map_curve[point] ){ 125 | 126 | if( x.map_type[point][i] == 'scatter'){ 127 | 128 | Plotly.restyle(el.id, {fillcolor : x.map_color[point][i] 129 | //, line : { color : x.hist_cols[x.map[point][i] - 1] } 130 | //, marker : { color : x.hist_cols[x.map[point][i] - 1] } 131 | } 132 | , parseInt(x.map_curve[point][i]) ); 133 | } 134 | 135 | if( x.map_type[point][i] == 'bar'){ 136 | 137 | Plotly.restyle(el.id, { marker : { color : x.map_color[point][i] } 138 | } 139 | , parseInt(x.map_curve[point][i]) ); 140 | } 141 | 142 | } 143 | 144 | } 145 | } 146 | 147 | Plotly.relayout(el.id, { shapes : shapes_original 148 | , title : ''} ); 149 | }); 150 | 151 | } 152 | }); -------------------------------------------------------------------------------- /inst/shiny/parcats/ui.R: -------------------------------------------------------------------------------- 1 | # 2 | # This is the user-interface definition of a Shiny web application. You can 3 | # run the application by clicking 'Run App' above. 4 | # 5 | # Find out more about building applications with Shiny here: 6 | # 7 | # http://shiny.rstudio.com/ 8 | # 9 | 10 | library(shiny) 11 | library(parcats) 12 | 13 | # Define UI for application that draws a histogram 14 | shinyUI(fluidPage(verticalLayout( 15 | 16 | # Application title 17 | titlePanel("easyalluvial"), 18 | inputPanel( 19 | shiny::checkboxGroupInput( 20 | "check_group_bin_numerics", 21 | "manip_bin_numerics()", 22 | c( 23 | center = "center", 24 | scale = "scale", 25 | transform = "transform" 26 | ), 27 | c( 28 | "center", 29 | "scale", 30 | "transform" 31 | ) 32 | ), 33 | shiny::radioButtons( 34 | "select_fill_by", 35 | "fill_by", 36 | c( 37 | "first_variable", 38 | "last_variable", 39 | "all_flows", 40 | "values" 41 | ) 42 | ), 43 | shiny::checkboxGroupInput( 44 | "check_group_col_filters", 45 | "palette_filter()", 46 | c( 47 | greys = "greys", 48 | # similar = "similar", 49 | reds = "reds", 50 | greens = "greens", 51 | blues = "blues", 52 | dark = "dark", 53 | medium = "medium", 54 | bright = "bright" 55 | ), 56 | c( 57 | "reds", 58 | "greens", 59 | "blues", 60 | "dark", 61 | "medium" 62 | ) 63 | ), 64 | # shiny::numericInput( 65 | # "select_num_tresh_similar", 66 | # "thresh_similar", 67 | # 25, 68 | # 1, 69 | # 1000, 70 | # 1 71 | # ), 72 | shiny::radioButtons( 73 | "select_bin_labels", 74 | "bin_labels", 75 | c( 76 | 'c("LL", "ML", "M", "MH", "HH")', 77 | "median", 78 | "mean", 79 | "min_max", 80 | "cuts" 81 | ) 82 | ), 83 | shiny::checkboxInput( 84 | "check_marginal_histograms_easyalluvial", 85 | "add_marginal_histograms()", 86 | TRUE 87 | ) 88 | ), 89 | 90 | mainPanel( 91 | shiny::plotOutput('easyalluvial', width = "800px", height = "600px") 92 | ), 93 | 94 | titlePanel("parcats"), 95 | 96 | inputPanel( 97 | shiny::checkboxInput( 98 | "check_marginal_histograms", 99 | "marginal_histograms", 100 | TRUE 101 | ), 102 | shiny::radioButtons( 103 | "select_hoveron", 104 | "hoveron", 105 | c( 106 | "color", 107 | "category", 108 | "dimension" 109 | ) 110 | ), 111 | shiny::radioButtons( 112 | "select_hoverinfo", 113 | "hoverinfo", 114 | c( 115 | "count", 116 | "probability", 117 | "count+probability" 118 | ) 119 | ), 120 | shiny::radioButtons( 121 | "select_arrangement", 122 | "arrangement", 123 | c( 124 | "perpendicular", 125 | "freeform", 126 | "fixed" 127 | ) 128 | ), 129 | shiny::checkboxInput( 130 | "check_bundle_colors", 131 | "bundlecolors", 132 | TRUE 133 | ), 134 | shiny::radioButtons( 135 | "select_sortpaths", 136 | "sortpaths", 137 | c( 138 | "forward", 139 | "backward" 140 | ) 141 | ), 142 | shiny::textInput( 143 | "select_label_font_colour", 144 | "label_font_colour", 145 | "black" 146 | ), 147 | shiny::numericInput( 148 | "select_num_label_font_size", 149 | "label_font_size", 150 | 24, 151 | 0, 152 | 100, 153 | 1 154 | ), 155 | shiny::textInput( 156 | "select_tick_font_colour", 157 | "tick_font_colour", 158 | "black" 159 | ), 160 | shiny::numericInput( 161 | "select_num_tick_font_size", 162 | "tick_font_size", 163 | value = 12, 164 | min = 0, 165 | max = 100, 166 | step = 1 167 | ), 168 | shiny::numericInput( 169 | "select_num_offset_marginal_histograms", 170 | "offset_marginal_histograms", 171 | value = 0.7, 172 | min = 0, 173 | max = 1, 174 | step = 0.05 175 | ) 176 | ), 177 | 178 | 179 | # Show a plot of the generated distribution 180 | mainPanel( 181 | parcats::parcatsOutput('parcats', width = "800px", height = "600px") 182 | ) 183 | ))) 184 | -------------------------------------------------------------------------------- /tests/testthat/test_parcats.R: -------------------------------------------------------------------------------- 1 | 2 | 3 | context('parcats') 4 | 5 | mtcars2 <- easyalluvial::mtcars2 6 | titanic <- easyalluvial::titanic 7 | quarterly_flights <- easyalluvial::quarterly_flights 8 | quarterly_sunspots <- easyalluvial::quarterly_sunspots 9 | 10 | test_that('parcats_alluvial_wide' 11 | ,{ 12 | 13 | p = alluvial_wide(mtcars2, max_variables = 5) 14 | 15 | parcats(p, marginal_histograms = FALSE) 16 | 17 | expect_error( parcats(p, marginal_histograms = TRUE) ) 18 | 19 | parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 20 | 21 | df = select(mtcars2, mpg, disp, wt, am, qsec) 22 | 23 | p = alluvial_wide(df) 24 | 25 | parcats(p, marginal_histograms = TRUE, data_input = df) 26 | 27 | }) 28 | 29 | 30 | test_that('parcats_alluvial_wide_num_only' 31 | ,{ 32 | 33 | df = mtcars2 %>% 34 | select_if(is.numeric) 35 | 36 | p = alluvial_wide(df, max_variables = 5) 37 | 38 | parcats(p, data_input = df) 39 | 40 | }) 41 | 42 | test_that('parcats_params',{ 43 | 44 | p = alluvial_wide(mtcars2, max_variables = 5) 45 | 46 | # hoveron 47 | parcats(p, hoveron = 'category', marginal_histograms = TRUE, data_input = mtcars2) 48 | parcats(p, hoveron = 'color', marginal_histograms = TRUE, data_input = mtcars2) 49 | parcats(p, hoveron = 'dimension', marginal_histograms = TRUE, data_input = mtcars2) 50 | 51 | #hoverinfo 52 | parcats(p, hoverinfo = 'count', marginal_histograms = FALSE) 53 | parcats(p, hoverinfo = 'probability', marginal_histograms = FALSE) 54 | parcats(p, hoveron = 'count+probability', marginal_histograms = FALSE) 55 | 56 | # hovertemplate probably needs some kind of format string, too complicated will drop this 57 | # parcats(p, hovertemplate = 'count', marginal_histograms = FALSE) 58 | # parcats(p, hovertemplate = 'probability', marginal_histograms = FALSE) 59 | # parcats(p, hovertemplate = 'category', marginal_histograms = FALSE) 60 | # parcats(p, hovertemplate = 'categorycount', marginal_histograms = FALSE) 61 | # parcats(p, hovertemplate = 'colorcount', marginal_histograms = FALSE) 62 | # parcats(p, hovertemplate = 'bandcolorcount', marginal_histograms = FALSE) 63 | 64 | # arrangement 65 | parcats(p, arrangement = 'fixed', marginal_histograms = FALSE) 66 | parcats(p, arrangement = 'perpendicular', marginal_histograms = FALSE) 67 | parcats(p, arrangement = 'freeform', marginal_histograms = FALSE) 68 | 69 | #bundlecolors 70 | parcats(p, bundlecolors = TRUE, marginal_histograms = FALSE) 71 | parcats(p, bundlecolors = FALSE, marginal_histograms = FALSE) 72 | 73 | #sortpaths 74 | parcats(p, sortpaths = 'forward', marginal_histograms = FALSE) 75 | parcats(p, sortpaths = 'backward', marginal_histograms = FALSE) 76 | 77 | #labelfont 78 | parcats(p, labelfont = list(size = 18, color = 'blue'), marginal_histograms = FALSE) 79 | 80 | #tickfont 81 | parcats(p, tickfont = list(size = 18, color = 'blue'), marginal_histograms = FALSE) 82 | 83 | }) 84 | 85 | test_that('parcats_alluvial_long' 86 | ,{ 87 | 88 | p = alluvial_long(quarterly_flights, key = qu, value = mean_arr_delay, id = tailnum) 89 | 90 | parcats(p, marginal_histograms = FALSE) 91 | 92 | p = alluvial_long(quarterly_flights, key = qu, value = mean_arr_delay, id = tailnum, fill = carrier) 93 | 94 | parcats(p, marginal_histograms = FALSE) 95 | 96 | p = alluvial_long(quarterly_sunspots, key = qu, value = spots, id = year) 97 | 98 | parcats(p, marginal_histograms = FALSE) 99 | 100 | }) 101 | 102 | test_that('parcats_alluvial_model_response' 103 | ,{ 104 | 105 | df = mtcars2[, ! names(mtcars2) %in% 'ids' ] 106 | m = randomForest::randomForest( disp ~ ., df) 107 | imp = m$importance 108 | dspace = get_data_space(df, imp, degree = 3) 109 | pred = predict(m, newdata = dspace) 110 | p = alluvial_model_response(pred, dspace, imp, degree = 3) 111 | 112 | parcats(p, marginal_histograms = FALSE, imp = FALSE) 113 | 114 | parcats(p, marginal_histograms = TRUE, imp = FALSE, data_input = df) 115 | 116 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 117 | 118 | # grid = add_marginal_histograms(p, df) 119 | 120 | # pdb 121 | pred = get_pdp_predictions(df, imp, m, degree = 3) 122 | p = alluvial_model_response(pred, dspace, imp, degree = 3, method = 'pdp') 123 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 124 | 125 | # categorical response --------------------------- 126 | 127 | df = titanic %>% 128 | select_if(is.factor) 129 | 130 | set.seed(0) 131 | m = randomForest::randomForest( Survived ~ ., df) 132 | imp = m$importance 133 | 134 | expect_warning( {dspace = get_data_space(df, imp, degree = 3, max_levels = 5)} ) 135 | 136 | expect_true( nrow(dspace) == 30 ) 137 | 138 | pred = predict(m, newdata = dspace,type = 'response') 139 | p = alluvial_model_response(pred, dspace, imp, degree = 3) 140 | 141 | parcats(p, marginal_histograms = FALSE, imp = FALSE) 142 | 143 | suppressWarnings({ 144 | # warning is raised because number of factors is cut to 5 145 | parcats(p, marginal_histograms = TRUE, imp = FALSE, data_input = df) 146 | 147 | parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 148 | }) 149 | 150 | # grid = add_marginal_histograms(p, df) 151 | 152 | }) 153 | -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-ru.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"ru",dictionary:{Autoscale:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0448\u043a\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","Box Select":"\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438","Click to enter Colorscale title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0448\u043a\u0430\u043b\u044b","Click to enter Component A title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 A","Click to enter Component B title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 B","Click to enter Component C title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 C","Click to enter Plot title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0430","Click to enter X axis title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0438 X","Click to enter Y axis title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0438 Y","Click to enter radial axis title":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u0438","Compare data on hover":"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435","Double-click on legend to isolate one trace":"\u0414\u0432\u0430\u0436\u0434\u044b \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445","Double-click to zoom back out":"\u0414\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u0432\u0430\u0436\u0434\u044b \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043c\u044b\u0448\u044c\u044e","Download plot":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a","Download plot as a png":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PNG","Edit in Chart Studio":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Chart Studio","IE only supports svg. Changing format to svg.":"IE \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e svg. \u0424\u043e\u0440\u043c\u0430\u0442 \u0441\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 svg.","Lasso Select":"\u041b\u0430\u0441\u0441\u043e","Orbital rotation":"\u041e\u0440\u0431\u0438\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435",Pan:"\u0421\u0434\u0432\u0438\u0433","Produced with Plotly":"\u0421\u043e\u0437\u0434\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Plotly",Reset:"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Reset axes":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0435\u0439 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Reset camera to default":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Reset camera to last save":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e","Reset view":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Reset views":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Show closest data on hover":"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435","Snapshot succeeded":"\u0421\u043d\u0438\u043c\u043e\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d","Sorry, there was a problem downloading your snapshot!":"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u043d\u0438\u043c\u043a\u0430","Taking snapshot - this may take a few seconds":"\u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u043c\u043e\u043a - \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434","Toggle Spike Lines":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0442\u043e\u0447\u0435\u043a","Toggle show closest data on hover":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043a\u0430\u0437 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","Turntable rotation":"\u0412\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043d\u043e\u043c \u0441\u0442\u043e\u043b\u0435",Zoom:"\u0417\u0443\u043c","Zoom in":"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c","Zoom out":"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c","close:":"\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435:","concentration:":"\u041a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u044f:","high:":"\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:","incoming flow count:":"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439:","kde:":"\u042f\u0434\u0435\u0440\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438:","lat:":"\u0428\u0438\u0440\u043e\u0442\u0430:","lon:":"\u0414\u043e\u043b\u0433\u043e\u0442\u0430:","low:":"\u041c\u0438\u043d\u0438\u043c\u0443\u043c:","lower fence:":"\u041d\u0438\u0436\u043d\u044f\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430:","max:":"\u041c\u0430\u043a\u0441.:","mean \xb1 \u03c3:":"\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \xb1 \u03c3:","mean:":"\u0421\u0440\u0435\u0434\u043d\u0435\u0435:","median:":"\u041c\u0435\u0434\u0438\u0430\u043d\u0430:","min:":"\u041c\u0438\u043d.:","new text":"\u041d\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442","open:":"\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435:","outgoing flow count:":"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439:","q1:":"q1:","q3:":"q3:","source:":"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:","target:":"\u0426\u0435\u043b\u044c:",trace:"\u0420\u044f\u0434","upper fence:":"\u0412\u0435\u0440\u0445\u043d\u044f\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430:"},format:{days:["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0432\u0442\u043e\u0440\u043d\u0438\u043a","\u0441\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043f\u044f\u0442\u043d\u0438\u0446\u0430","\u0441\u0443\u0431\u0431\u043e\u0442\u0430"],shortDays:["\u0432\u0441","\u043f\u043d","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043f\u0442","\u0441\u0431"],months:["\u042f\u043d\u0432\u0430\u0440\u044c","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],shortMonths:["\u042f\u043d\u0432.","\u0424\u0435\u0432\u0440.","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440.","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433.","\u0421\u0435\u043d\u0442.","\u041e\u043a\u0442.","\u041d\u043e\u044f","\u0414\u0435\u043a."],date:"%d.%m.%Y",decimal:",",thousands:" "}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /inst/htmlwidgets/lib/plotly.js/locales/plotly-locale-uk.js: -------------------------------------------------------------------------------- 1 | var locale={moduleType:"locale",name:"uk",dictionary:{Autoscale:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435 \u0448\u043a\u0430\u043b\u044e\u0432\u0430\u043d\u043d\u044f","Box Select":"\u0412\u0438\u0434\u0456\u043b\u0435\u043d\u043d\u044f \u043f\u0440\u044f\u043c\u043e\u043a\u0443\u0442\u043d\u043e\u0457 \u043e\u0431\u043b\u0430\u0441\u0442\u0456","Click to enter Colorscale title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u0448\u043a\u0430\u043b\u0438 \u043a\u043e\u043b\u044c\u043e\u0440\u0443","Click to enter Component A title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 A","Click to enter Component B title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 B","Click to enter Component C title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 C","Click to enter Plot title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u0433\u0440\u0430\u0444\u0456\u043a\u0430","Click to enter X axis title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043e\u0441\u0456 X","Click to enter Y axis title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043e\u0441\u0456 Y","Click to enter radial axis title":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u043d\u0430\u0437\u0432\u0438 \u043f\u043e\u043b\u044f\u0440\u043d\u043e\u0457 \u043e\u0441\u0456","Compare data on hover":"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456 \u043f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0434\u0430\u043d\u0456","Double-click on legend to isolate one trace":"\u0414\u0432\u0456\u0447\u0456 \u043a\u043b\u0430\u0446\u043d\u0456\u0442\u044c \u043f\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0456 \u0434\u043b\u044f \u0432\u0438\u0434\u0456\u043b\u0435\u043d\u043d\u044f \u043e\u043a\u0440\u0435\u043c\u0438\u0445 \u0434\u0430\u043d\u0438\u0445","Double-click to zoom back out":"\u0414\u043b\u044f \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0434\u0432\u0456\u0447\u0456 \u043a\u043b\u0430\u0446\u043d\u0456\u0442\u044c \u043c\u0438\u0448\u0435\u044e","Download plot":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0433\u0440\u0430\u0444\u0456\u043a","Download plot as a png":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0456 PNG","Edit in Chart Studio":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0443 Chart Studio","IE only supports svg. Changing format to svg.":"IE \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043b\u0438\u0448\u0435 svg. \u0424\u043e\u0440\u043c\u0430\u0442 \u0437\u043c\u0456\u043d\u044e\u0454\u0442\u044c\u0441\u044f \u043d\u0430 svg.","Lasso Select":"\u041b\u0430\u0441\u043e","Orbital rotation":"\u0420\u0443\u0445 \u043f\u043e \u043e\u0440\u0431\u0456\u0442\u0456",Pan:"\u0417\u0441\u0443\u0432","Produced with Plotly":"\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e Plotly",Reset:"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","Reset axes":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u043e\u0441\u044f\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","Reset camera to default":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u043a\u0430\u043c\u0435\u0440\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","Reset camera to last save":"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u043a\u0430\u043c\u0435\u0440\u0443 \u0432 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043d","Reset view":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","Reset views":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","Show closest data on hover":"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456 \u043f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0456 \u0434\u0430\u043d\u0456","Snapshot succeeded":"\u0417\u043d\u0456\u043c\u043e\u043a \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0439","Sorry, there was a problem downloading your snapshot!":"\u041d\u0430 \u0436\u0430\u043b\u044c, \u0432\u0438\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u0456 \u0437\u043d\u0456\u043c\u043a\u0443","Taking snapshot - this may take a few seconds":"\u0421\u0442\u0432\u043e\u0440\u044e\u0454\u0442\u044c\u0441\u044f \u0437\u043d\u0456\u043c\u043e\u043a - \u0446\u0435 \u043c\u043e\u0436\u0435 \u0437\u0430\u0439\u043d\u044f\u0442\u0438 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434","Toggle Spike Lines":"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438/\u0432\u0438\u043c\u043a\u043d\u0443\u0442\u0438 \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043b\u0456\u043d\u0456\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0456\u0439 \u0442\u043e\u0447\u043e\u043a","Toggle show closest data on hover":"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438/\u0432\u0438\u043c\u043a\u043d\u0443\u0442\u0438 \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0438\u0445 \u0434\u0430\u043d\u0438\u0445 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456","Turntable rotation":"\u041e\u0431\u0435\u0440\u0442\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043d\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0456",Zoom:"\u0417\u0443\u043c","Zoom in":"\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438","Zoom out":"\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438","close:":"\u0417\u0430\u043a\u0440\u0438\u0442\u0442\u044f:","concentration:":"\u041a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0456\u044f:","high:":"\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:","incoming flow count:":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0432\u0445\u0456\u0434\u043d\u0438\u0445 \u0437\u0432'\u044f\u0437\u043a\u0456\u0432:","kde:":"\u042f\u0434\u0440\u043e\u0432\u0430 \u043e\u0446\u0456\u043d\u043a\u0430 \u0433\u0443\u0441\u0442\u0438\u043d\u0438 \u0440\u043e\u0437\u043f\u043e\u0434\u0456\u043b\u0443:","lat:":"\u0428\u0438\u0440\u043e\u0442\u0430:","lon:":"\u0414\u043e\u0432\u0433\u043e\u0442\u0430:","low:":"\u041c\u0456\u043d\u0456\u043c\u0443\u043c:","lower fence:":"\u041d\u0438\u0436\u043d\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044f:","max:":"\u041c\u0430\u043a\u0441.:","mean \xb1 \u03c3:":"\u0421\u0435\u0440\u0435\u0434\u043d\u0454 \xb1 \u03c3:","mean:":"\u0421\u0435\u0440\u0435\u0434\u043d\u0454:","median:":"\u041c\u0435\u0434\u0456\u0430\u043d\u0430:","min:":"\u041c\u0456\u043d.:","new text":"\u041d\u043e\u0432\u0438\u0439 \u0442\u0435\u043a\u0441\u0442","open:":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0442\u044f:","outgoing flow count:":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0445 \u0437\u0432'\u044f\u0437\u043a\u0456\u0432:","q1:":"q1:","q3:":"q3:","source:":"\u0414\u0436\u0435\u0440\u0435\u043b\u043e:","target:":"\u0426\u0456\u043b\u044c:",trace:"\u0420\u044f\u0434","upper fence:":"\u0412\u0435\u0440\u0445\u043d\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044f:"},format:{days:["\u043d\u0435\u0434\u0456\u043b\u044f","\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a","\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a","\u0441\u0435\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440","\u043f'\u044f\u0442\u043d\u0438\u0446\u044f","\u0441\u0443\u0431\u043e\u0442\u0430"],shortDays:["\u043d\u0434","\u043f\u043d","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043f\u0442","\u0441\u0431"],months:["\u0421\u0456\u0447\u0435\u043d\u044c","\u041b\u044e\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c","\u041a\u0432\u0456\u0442\u0435\u043d\u044c","\u0422\u0440\u0430\u0432\u0435\u043d\u044c","\u0427\u0435\u0440\u0432\u0435\u043d\u044c","\u041b\u0438\u043f\u0435\u043d\u044c","\u0421\u0435\u0440\u043f\u0435\u043d\u044c","\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c","\u0416\u043e\u0432\u0442\u0435\u043d\u044c","\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043d\u044c"],shortMonths:["\u0421\u0456\u0447.","\u041b\u044e\u0442.","\u0411\u0435\u0440\u0435\u0437.","\u041a\u0432\u0456\u0442.","\u0422\u0440\u0430\u0432.","\u0427\u0435\u0440\u0432.","\u041b\u0438\u043f.","\u0421\u0435\u0440\u043f.","\u0412\u0435\u0440\u0435\u0441.","\u0416\u043e\u0432\u0442.","\u041b\u0438\u0441\u0442\u043e\u043f.","\u0413\u0440\u0443\u0434."],date:"%d.%m.%Y",decimal:",",thousands:" "}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); -------------------------------------------------------------------------------- /R/parcats.R: -------------------------------------------------------------------------------- 1 | # satisfy CMDcheck 2 | # https://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when 3 | 4 | 5 | if(getRversion() >= "2.15.1"){ 6 | utils::globalVariables( c('.', 'alluvial_id', 'color', 'color_line', 'color_marker', 'fill_flow', 'fill_value', 7 | 'label', 'line_at', 'perc', 'plotted', 'rwn', 'shape_index', 'trace_index', 'trace_number', 8 | 'type', 'value', 'value_str', 'var_key', 'variable', 'x', 'x_value') ) 9 | } 10 | 11 | 12 | 13 | 14 | trace_hist_all = function(p, data_input){ 15 | 16 | vars = manip_get_ggplot_data(p)$x %>% levels() 17 | 18 | traces = list() 19 | 20 | for (var in vars) { 21 | 22 | is_pred = var == 'pred' 23 | 24 | if(! is_pred){ 25 | is_num = is.numeric( data_input[[var]] ) 26 | }else{ 27 | var_pred = names(data_input)[! names(data_input) %in% names(attr(p, "alluvial_params")$dspace) ] 28 | if(length(var_pred) > 1){ 29 | stop( paste('\n"data_input" should only contain explanatory and response variables, so response variable can be inferred. 30 | \nPotential response variables:', paste( var_pred, collapse = ', ') 31 | , '\nPlease pass correct response variable as string using the "pred_var" parameter.' ) ) 32 | } 33 | is_num = is.numeric( data_input[[var_pred]] ) 34 | } 35 | 36 | if( is_num ){ 37 | trace = trace_hist_num(p, data_input, var = var) 38 | }else{ 39 | trace = trace_hist_cat(p, data_input, var = var) 40 | } 41 | 42 | traces = append(traces, trace) 43 | } 44 | 45 | return(traces) 46 | } 47 | 48 | trace_rug_all = function(p, data_input){ 49 | vars = manip_get_ggplot_data(p)$x %>% levels() 50 | 51 | traces = list() 52 | 53 | for (var in vars) { 54 | 55 | trace = trace_rug(p, data_input, var) 56 | 57 | traces = append(traces, trace) 58 | } 59 | 60 | return(traces) 61 | } 62 | 63 | trace_rug = function(p, data_input, var){ 64 | 65 | vars = manip_get_ggplot_data(p)$x %>% levels 66 | 67 | is_num = is.numeric(data_input[[var]]) 68 | 69 | if(is_num){ 70 | x = data_input[[var]] 71 | y = rep('rug', length(data_input[[var]]) ) 72 | type = 'scatter' 73 | }else{ 74 | x = c() 75 | y = c() 76 | type = 'bar' 77 | } 78 | 79 | trace = list( type = type 80 | , mode = 'markers' 81 | , x = x 82 | , y = y 83 | , marker = list(symbol = 'line-ns-open', color = 'black') 84 | , xaxis = paste0( 'x', which(vars == var) ) 85 | , yaxis = paste0( 'y1', which(vars == var) ) 86 | , name = paste0('rug_', var) 87 | , showlegend = FALSE 88 | ) 89 | 90 | trace = list(trace) 91 | names(trace) <- paste0('rug_', var) 92 | 93 | return( trace ) 94 | } 95 | 96 | trace_hist_mod = function(p, data_input, var){ 97 | # creates densitiy histogram with line markers for model response 98 | 99 | p_hist = easyalluvial::plot_hist(var = var, p = p, data_input = data_input) 100 | 101 | df = p_hist$data 102 | 103 | vars = manip_get_ggplot_data(p)$x %>% levels 104 | 105 | values = data_input[[var]] 106 | 107 | dens = density(values) 108 | x_var = dens$x 109 | y_var = dens$y 110 | 111 | trace_var = list( x = x_var 112 | , y = y_var 113 | , type = 'scatter' 114 | , line = list( color = 'grey' ) 115 | , marker = list( size = 0 116 | , color = 'grey' 117 | , opacity = 0) 118 | , showlegend = FALSE 119 | , name = paste0( var, '_dens') 120 | , xaxis = paste0( 'x', which(vars == var) ) 121 | , yaxis = paste0( 'y', which(vars == var) ) 122 | 123 | ) 124 | 125 | trace_var = list(trace_var) 126 | names(trace_var) <- paste0( var, '_dens') 127 | 128 | lines_at = attr(p, "alluvial_params")$dspace[[var]] %>% 129 | unique() %>% 130 | sort() 131 | 132 | # we have to rejoin with fill labels 133 | # labels need to be consistent {var}_{fill_label} so that we 134 | # can track the traces 135 | 136 | fill_labels = manip_get_ggplot_data(p) %>% 137 | filter( x == var) %>% 138 | select( value, fill_value) %>% 139 | distinct() %>% 140 | arrange( desc(value) ) %>% 141 | mutate( line_at = lines_at) %>% 142 | rename( label = value 143 | , color = fill_value ) 144 | 145 | 146 | trace_vlines = fill_labels %>% 147 | mutate( trace = pmap(list(label, color, line_at) 148 | , function(l, c, lin) list( x0 = lin 149 | , y0 = 0 150 | , x1 = lin 151 | , y1 = max(y_var) 152 | , type = 'line' 153 | , line = list( color = 'lightgrey') 154 | , showlegend = FALSE 155 | , name = paste0( var,'_' ,l ) 156 | , xref = paste0( 'x', which(vars == var) ) 157 | , yref = paste0( 'y', which(vars == var) ) ) ) 158 | ) %>% 159 | .$trace 160 | 161 | 162 | names(trace_vlines) <- paste0( var,'_', fill_labels$label ) 163 | 164 | traces = append(trace_var, trace_vlines) 165 | 166 | } 167 | 168 | trace_hist_num = function(p, data_input, var){ 169 | 170 | 171 | p_hist = easyalluvial::plot_hist(var = var, p = p, data_input = data_input) 172 | 173 | df = p_hist$data 174 | 175 | vars = manip_get_ggplot_data(p)$x %>% levels 176 | 177 | if(var == 'pred'){ 178 | 179 | # we have to rejoin with fill labels 180 | # labels need to be consistent {var}_{fill_label} so that we 181 | # can track the traces 182 | 183 | fill_labels = manip_get_ggplot_data(p) %>% 184 | filter( x == 'pred') %>% 185 | select(fill, value, fill_value) %>% 186 | mutate( rwn = as.numeric(fill) ) %>% 187 | distinct() %>% 188 | arrange( desc(rwn) ) %>% 189 | mutate( rwn = row_number() ) 190 | 191 | 192 | df = df %>% 193 | filter(variable == 'pred') %>% 194 | left_join( fill_labels, by = 'rwn') 195 | } 196 | 197 | if( attr(p, "alluvial_type") == 'model_response' & var != 'pred'){ 198 | return( trace_hist_mod(p, data_input, var) ) 199 | } 200 | 201 | df = df %>% 202 | group_by(fill) %>% 203 | tidyr::nest() %>% 204 | mutate(trace = map2(data, fill, function(x,y) list( x = x$x 205 | , y = x$y 206 | , fillcolor = x$fill_value[1] 207 | , fill = 'tozeroy' 208 | , type = 'scatter' 209 | , line = list( color = x$fill_value[1] ) 210 | , marker = list( size = 0 211 | , color = x$fill_value[1] 212 | , opacity = 0) 213 | , showlegend = FALSE 214 | #, text = y 215 | #, hoveron = 'points' 216 | , name = y 217 | , xaxis = paste0( 'x', which(vars == var) ) 218 | , yaxis = paste0( 'y', which(vars == var) ) ) ) ) 219 | traces = df$trace 220 | 221 | names(traces) <- paste0( var, '_', df$fill) 222 | 223 | return(traces) 224 | } 225 | 226 | trace_hist_cat = function(p, data_input, var){ 227 | 228 | p_hist = easyalluvial::plot_hist(var = var, p = p, data_input = data_input) 229 | 230 | df_label = manip_get_ggplot_data(p) %>% 231 | filter( x == var ) %>% 232 | mutate( value = fct_drop(value) ) %>% 233 | select( value ) %>% 234 | distinct() %>% 235 | arrange( desc(value) ) %>% 236 | mutate( rwn = row_number() ) 237 | 238 | if( var %in% names(p_hist$data) ){ 239 | # categorical variables from model response plots 240 | df = p_hist$data %>% 241 | mutate( rwn = as.integer( !! as.name(var) ) ) %>% 242 | left_join( df_label, by = 'rwn') %>% 243 | rename( var_key = !! as.name(var) ) 244 | }else if( var == 'pred' ){ 245 | df = p_hist$data %>% 246 | filter( variable == 'pred') %>% 247 | mutate( var_key = value 248 | , pred = value ) %>% 249 | ungroup() %>% 250 | select(var_key, fill_value, value, n) %>% 251 | uncount(n) 252 | 253 | }else{ 254 | # categorical variables from regular alluvial plots 255 | df = p_hist$data %>% 256 | mutate( var_key = as.factor(var_key) 257 | , rwn = as.integer( var_key ) ) %>% 258 | left_join( df_label, by = 'rwn') 259 | } 260 | 261 | lvl = levels(df[[var]]) 262 | 263 | vars = manip_get_ggplot_data(p)$x %>% levels 264 | 265 | df = df %>% 266 | mutate( var_key = fct_relevel(var_key, lvl) ) %>% 267 | group_by(var_key, fill_value, value) %>% 268 | count() %>% 269 | arrange(var_key) %>% 270 | mutate(trace = list( list( x = list(var_key) 271 | , y = list(n) 272 | , type = 'bar' 273 | , marker = list(color = as.character(fill_value) ) 274 | , showlegend = FALSE 275 | # , width = 0.5 276 | , name = paste0(var, '_', value) 277 | , xaxis = paste0( 'x', which(vars == var) ) 278 | , yaxis = paste0( 'y', which(vars == var) ) ) ) ) 279 | traces = df$trace 280 | 281 | names(traces) <- paste0( var, '_', df$value) 282 | 283 | return(traces) 284 | } 285 | 286 | trace_imp = function(p, data_input, truncate_at = 50, color = 'darkgrey'){ 287 | 288 | p_imp = easyalluvial::plot_imp(p, data_input, truncate_at, color ) 289 | 290 | df = manip_get_ggplot_data(p_imp) 291 | 292 | if( ! 'const_values' %in% names(df) ){ 293 | df$const_values = NA 294 | } 295 | 296 | df = df %>% 297 | mutate_if( is.factor, as.character ) %>% 298 | arrange( perc ) %>% 299 | mutate( fill = ifelse(plotted == 'n', 'lightgrey', color) 300 | , method = attr(p, "alluvial_params")$method 301 | , text = case_when( plotted == 'y' ~ 'alluvial' 302 | , method == 'pdp' ~ 'pdp' 303 | , TRUE ~ paste('fixed:', const_values) ) ) %>% 304 | group_by(vars, perc) %>% 305 | mutate( trace = list( list( y = list(vars) 306 | , x = list(perc) 307 | , type = 'bar' 308 | , marker = list( color = fill ) 309 | , showlegend = FALSE 310 | , width = 0.5 311 | , name = text 312 | , xaxis = 'x99' 313 | , yaxis = 'y99' 314 | , orientation = 'h' 315 | ) ) ) 316 | 317 | traces = df$trace 318 | 319 | names(traces) <- paste0( 'imp_', df$vars) 320 | 321 | return(traces) 322 | } 323 | 324 | 325 | trace_parcats = function(p 326 | , domain 327 | , hoveron 328 | , hoverinfo 329 | # , hovertemplate 330 | , arrangement 331 | , bundlecolors 332 | , sortpaths 333 | , labelfont 334 | , tickfont 335 | ){ 336 | 337 | if(attr(p, "alluvial_type") == 'model_response'){ 338 | df = manip_get_ggplot_data(p) %>% 339 | arrange( desc(value) ) %>% 340 | mutate(value_str = as.character(value) 341 | , value_str = ifelse( x != 'pred', str_split(value_str, '\\\n'), value_str) 342 | , value_str = map_chr(value_str, 1) 343 | , value_str = as_factor(value_str) 344 | , value_str = fct_rev(value_str) 345 | , value = value_str) %>% 346 | select( - value_str) 347 | }else{ 348 | df = manip_get_ggplot_data(p) 349 | } 350 | 351 | df = df %>% 352 | select( - fill_value, - fill ) %>% 353 | spread(x, value) %>% 354 | arrange(alluvial_id) 355 | 356 | if (attr(p, "alluvial_params")$fill_by == "values") { 357 | stop("fill_by = 'values' not supported in parcats") 358 | } 359 | 360 | if( nrow(df) != ( df$alluvial_id %>% as.numeric %>% max() ) ){ 361 | stop('data assumption violated') 362 | } 363 | 364 | dim_names = df %>% 365 | select(-n, - alluvial_id, - fill_flow) %>% 366 | names() 367 | 368 | for(name in dim_names){ 369 | 370 | order_array = df[[name]] %>% 371 | fct_drop() %>% 372 | levels() 373 | 374 | l = list(label = name 375 | , values = df[[name]] 376 | , categoryorder = 'array' 377 | , categoryarray = order_array ) 378 | 379 | if(name == dim_names[1]){ 380 | dimensions = list( l ) 381 | }else{ 382 | dimensions[[length(dimensions) + 1]] = l 383 | } 384 | } 385 | 386 | parcats = list( 387 | type = 'parcats' 388 | , dimensions = dimensions 389 | , counts = df$n 390 | , line = list( shape = 'hspline' 391 | , color = df$fill_flow) 392 | , hoveron = hoveron 393 | , hoverinfo = hoverinfo 394 | , labelfont = labelfont 395 | # , hovertemplate = hovertemplate 396 | , arrangement = arrangement 397 | , bundlecolors = bundlecolors 398 | , sortpaths = sortpaths 399 | , tickfont = tickfont 400 | , domain = domain ) 401 | 402 | } 403 | 404 | create_layout_rug = function(trace_rugs, layout_hist, offset = 0.01){ 405 | 406 | 407 | layout = layout_hist[ which( startsWith(names(layout_hist), 'yaxis' ) )] 408 | 409 | for( i in seq(1, length(layout) ) ){ 410 | domain_old = layout[[i]]$domain 411 | domain_new = c(domain_old[1] - offset, domain_old[1] - 0.001 ) 412 | layout[[i]]$domain <- domain_new 413 | layout[[i]]$anchor <- paste0('x', i) 414 | names(layout) 415 | 416 | } 417 | 418 | names(layout) <- paste0('yaxis1', seq(1, length(layout) ) ) 419 | 420 | return(layout) 421 | } 422 | 423 | create_layout_hist = function(trace_hist 424 | , lim_up = 0.9 425 | , lim_right = 1 426 | , space = 0.025 427 | ){ 428 | 429 | 430 | lim_right = ifelse( lim_right == 1, 1, lim_right - 0.05 ) 431 | 432 | yaxis = map(trace_hist, 'yaxis') %>% unique() %>% unlist %>% sort() 433 | xaxis = map(trace_hist, 'xaxis') %>% unique() %>% unlist %>% sort() 434 | 435 | coord_x = seq(0,1, lim_right / length(yaxis) ) 436 | 437 | spaces = map(coord_x, ~ c(.-space/2, .+space/2) ) %>% unlist() 438 | 439 | coord_x = c(0, spaces[3:(length(spaces)-2) ], lim_right) 440 | 441 | layout = list() 442 | 443 | for( i in seq(1, length(xaxis), 1) ){ 444 | 445 | 446 | layout_x = list( domain = coord_x[(i*2-1):(i*2)] 447 | #, anchor = yaxis[i] 448 | , anchor = paste0('y1', i) 449 | , showgrid = FALSE 450 | , showline = FALSE 451 | , zeroline = FALSE ) 452 | 453 | layout_x = list(layout_x) 454 | 455 | num = xaxis[i] %>% str_extract('[0-9]+') 456 | names(layout_x) <- paste0('xaxis', num) 457 | 458 | layout = append(layout, layout_x ) 459 | } 460 | 461 | for( i in seq(1, length(yaxis), 1) ){ 462 | layout_y = list( domain = c(lim_up, 1) 463 | #, anchor = xaxis[i] 464 | #, anchor = paste0('xaxis1', i) 465 | , showgrid = FALSE 466 | , showline = FALSE 467 | , showticklabels = FALSE 468 | , zeroline = FALSE ) 469 | 470 | layout_y = list(layout_y) 471 | 472 | num = yaxis[i] %>% str_extract('[0-9]+') 473 | names(layout_y) <- paste0('yaxis', num) 474 | 475 | layout = append(layout, layout_y ) 476 | 477 | 478 | } 479 | 480 | return(layout) 481 | } 482 | 483 | map_trace = function(p, trace_hist){ 484 | 485 | df = manip_get_ggplot_data(p) %>% 486 | mutate( x_value = map2_chr(x, value, function(x,y) paste0(x,'_' ,y) ) 487 | , trace_number = map(x_value, ~ which(names(trace_hist) == . ) ) 488 | , trace_number = map_int(trace_number, ~ ifelse( is_empty(.), NA, .) ) ) %>% 489 | filter( ! is.na(trace_number) ) %>% 490 | mutate( type = map_chr(trace_number, ~ trace_hist[[.]][['type']] ) 491 | , color_marker = map(trace_number, ~ trace_hist[[.]][['marker']][['color']] ) 492 | , color_line = map(trace_number, ~ trace_hist[[.]][['line']][['color']] ) 493 | , color = ifelse( type == 'line', color_line, color_marker) 494 | , color = map_chr(color, ~ . ) 495 | ) %>% 496 | select(alluvial_id, trace_number, type, color) %>% 497 | group_by(alluvial_id) %>% 498 | tidyr::nest() %>% 499 | ungroup() %>% 500 | mutate(trace_number = map(data, 'trace_number') 501 | , type = map(data, 'type') 502 | , color = map(data, 'color') 503 | , alluvial_id = as.character(alluvial_id) ) 504 | 505 | map_curve = df$trace_number 506 | names(map_curve) <- df$alluvial_id 507 | 508 | map_type = df$type 509 | names(map_type) <- df$alluvial_id 510 | 511 | map_color = df$color 512 | names(map_color) <- df$alluvial_id 513 | 514 | return( list( map_curve = map_curve 515 | , map_type = map_type 516 | , map_color = map_color) ) 517 | 518 | } 519 | 520 | get_shapes = function(traces){ 521 | 522 | types = map_chr(traces, ~ .$type) %>% 523 | unname() 524 | 525 | lines_index = which(types == 'line') 526 | 527 | shapes = traces[lines_index] 528 | 529 | map_trace_2_shape = tibble( trace_index = seq(1, length(traces) ) ) %>% 530 | mutate( shape_index = map( trace_index, ~ which(lines_index == .) ) 531 | , shape_index = map_int( shape_index, ~ ifelse( is_empty(.), as.integer(0), .) ) 532 | ) 533 | 534 | ls_shapes = list( map_trace_2_shape = map_trace_2_shape$shape_index 535 | , shapes = shapes) 536 | 537 | return(ls_shapes) 538 | } 539 | 540 | #'@title create plotly parallel categories diagram from alluvial plot 541 | #'@description creates an interactive parallel categories diagram from an 'easyalluvial' 542 | #' plot using the 'plotly.js' library 543 | #'@param p alluvial plot 544 | #'@param marginal_histograms logical, add marginal histograms, Default: TRUE 545 | #'@param data_input dataframe, data used to create alluvial plot, Default: NULL 546 | #'@param imp dataframe, with not more then two columns one of them numeric 547 | #' containing importance measures and one character or factor column containing 548 | #' corresponding variable names as found in training data. 549 | #'@param width integer, htmlwidget width in pixels, Default: NULL 550 | #'@param height integer, htmlwidget height in pixels, Default: NULL 551 | #'@param elementId , htmlwidget elementid, Default: NULL 552 | #'@param hoveron character, one of c('category', 'color', 'dimension'), Sets the 553 | #' hover interaction mode for the parcats diagram.', 'If `category`, hover 554 | #' interaction take place per category.', 'If `color`, hover interactions take 555 | #' place per color per category.', 'If `dimension`, hover interactions take 556 | #' place across all categories per dimension., Default: 'color' 557 | #'@param hoverinfo character, one of c('count', 'probability', 558 | #' 'count+probability') set info displayed on mouse hover Default: 559 | #' 'count+probability' 560 | #'@param arrangement, character, one of c('perpendicular', 'freeform', 'fixed') 561 | #' 'Sets the drag interaction mode for categories and dimensions.', 'If 562 | #' `perpendicular`, the categories can only move along a line perpendicular to 563 | #' the paths.', 'If `freeform`, the categories can freely move on the plane.', 564 | #' 'If `fixed`, the categories and dimensions are stationary.', Default: 565 | #' 'perpendicular' 566 | #'@param bundlecolors logical, 'Sort paths so that like colors are bundled 567 | #' together within each category.', Default: TRUE 568 | #'@param sortpaths character, one of c('forward', 'backward'), 'Sets the path 569 | #' sorting algorithm.', 'If `forward`, sort paths based on dimension categories 570 | #' from left to right.', Default: 'forward' 'If `backward`, sort paths based on 571 | #' dimensions categories from right to left.' 572 | #'@param labelfont list, 'Sets the font for the `dimension` labels.', Default: 573 | #' list(size = 24, color = 'black') 574 | #'@param tickfont list, Sets the font for the `category` labels.', Default: NULL 575 | #'@param offset_marginal_histograms double, height ratio reserved for parcats 576 | #' diagram, Default: 0.8 577 | #'@param offset_imp double, width ratio reserved for parcats diagram, Default: 578 | #' 0.9 579 | #'@return htmlwidget 580 | #'@details most parameters are best left at default values 581 | #' @examples 582 | #' 583 | #'\donttest{ 584 | #'library(easyalluvial) 585 | #' 586 | #' # alluvial wide --------------------------------- 587 | #' p = alluvial_wide(mtcars2, max_variables = 5) 588 | #' 589 | #' parcats(p, marginal_histograms = FALSE) 590 | #' 591 | #' parcats(p, marginal_histograms = TRUE, data_input = mtcars2) 592 | #' 593 | #' if(check_pkg_installed("randomForest", raise_error = FALSE)) { 594 | #' # alluvial for model response -------------------- 595 | #' df = mtcars2[, ! names(mtcars2) %in% 'ids' ] 596 | #' m = randomForest::randomForest( disp ~ ., df) 597 | #' imp = m$importance 598 | #' dspace = get_data_space(df, imp, degree = 3) 599 | #' pred = predict(m, newdata = dspace) 600 | #' p = alluvial_model_response(pred, dspace, imp, degree = 3) 601 | #' 602 | #' parcats(p, marginal_histograms = TRUE, imp = TRUE, data_input = df) 603 | #' } 604 | #'} 605 | #' 606 | #'@seealso \code{\link[easyalluvial]{alluvial_wide}} 607 | #', \code{\link[easyalluvial]{alluvial_long}} 608 | #', \code{\link[easyalluvial]{alluvial_model_response}} 609 | #', \code{\link[easyalluvial]{alluvial_model_response_caret}} 610 | #` 611 | #'@rdname parcats 612 | #'@export 613 | #'@importFrom htmlwidgets createWidget 614 | #'@importFrom tidyr nest uncount 615 | #'@importFrom stringr str_extract str_split 616 | #'@import dplyr 617 | #'@import tidyr 618 | #'@import forcats 619 | #'@import purrr 620 | #'@import easyalluvial 621 | #'@importFrom graphics text 622 | #'@importFrom stats density 623 | #'@importFrom utils data 624 | #'@importFrom tibble tibble 625 | parcats <- function(p, marginal_histograms = TRUE, data_input = NULL 626 | , imp = TRUE 627 | , width = NULL, height = NULL, elementId = NULL 628 | , hoveron = 'color' 629 | , hoverinfo = 'count+probability' 630 | # , hovertemplate = NULL 631 | , arrangement = 'perpendicular' 632 | , bundlecolors = TRUE 633 | , sortpaths = 'forward' 634 | , labelfont = list( size = 24, color = 'black' ) 635 | , tickfont = NULL 636 | , offset_marginal_histograms = 0.7 637 | , offset_imp = 0.9 638 | ) { 639 | 640 | if(marginal_histograms & is.null(data_input) ){ 641 | stop('data_input required if marginal_histograms == TRUE') 642 | } 643 | 644 | if( imp == TRUE & is.null(data_input) & attr(p, "alluvial_type") == 'model_response' ){ 645 | stop('data_input required if imp == TRUE') 646 | }else if(attr(p, "alluvial_type") != 'model_response' | ! imp ){ 647 | imp = FALSE 648 | offset_imp = 1 649 | } 650 | 651 | if(marginal_histograms){ 652 | domain = list(y = c(0, offset_marginal_histograms)) 653 | }else{ 654 | domain = list( y = c(0, 1) ) 655 | } 656 | 657 | if( imp & attr(p, "alluvial_type") == 'model_response' ){ 658 | domain$x = c(0, offset_imp - 0.05 ) 659 | traces_imp = trace_imp(p, data_input, truncate_at = 50, color = 'darkgrey') 660 | }else{ 661 | traces_imp = list() 662 | } 663 | 664 | parcats = trace_parcats(p, domain = domain 665 | , hoveron = hoveron 666 | , hoverinfo = hoverinfo 667 | # , hovertemplate = hovertemplate 668 | , arrangement = arrangement 669 | , bundlecolors = bundlecolors 670 | , sortpaths = sortpaths 671 | , labelfont = labelfont 672 | , tickfont = tickfont 673 | ) 674 | 675 | if(marginal_histograms){ 676 | trace_hist = trace_hist_all(p, data_input) 677 | trace_rugs = trace_rug_all(p, data_input) 678 | traces = append( list(parcats = parcats), trace_hist) 679 | traces = append( traces, trace_rugs ) 680 | layout_hist = create_layout_hist(trace_hist, lim_right = offset_imp) 681 | layout_rug = create_layout_rug(trace_rugs, layout_hist) 682 | layout = append(layout_hist, layout_rug) 683 | ls_shapes = get_shapes(trace_hist) 684 | shapes = ls_shapes$shapes 685 | map_trace_2_shape = ls_shapes$map_trace_2_shape 686 | ls_map = map_trace(p, trace_hist) 687 | map_curve = ls_map$map_curve 688 | map_type = ls_map$map_type 689 | map_color = ls_map$map_color 690 | 691 | }else{ 692 | trace_hist = list() 693 | traces = list(parcats = parcats) 694 | layout = list() 695 | shapes = list() 696 | map_trace_2_shape = list() 697 | map_curve = list() 698 | map_type = list() 699 | map_color = list() 700 | } 701 | 702 | if(imp){ 703 | traces = append(traces, traces_imp) 704 | layout_imp = list( yaxis99 = list( domain = c(0,1) 705 | , anchor = 'y99' 706 | , showticklabels = FALSE 707 | ) 708 | , xaxis99 = list(domain = c(offset_imp,1) 709 | , anchor = 'x99' 710 | , showticklabels = FALSE 711 | ) ) 712 | layout = append(layout, layout_imp) 713 | 714 | # we cannot move the axis labels to display inside the plot 715 | # so we use annotations instead 716 | 717 | annotations = list() 718 | 719 | p_imp = easyalluvial::plot_imp(p, data_input) 720 | 721 | max_perc = manip_get_ggplot_data(p_imp)$perc %>% max() 722 | 723 | for( i in seq(1, length(traces_imp) ) ){ 724 | l = list( xref = 'x99' 725 | , yref = 'y99' 726 | , x = max_perc # traces_imp[[1]]$x[[1]] 727 | , y = traces_imp[[i]]$y[[1]] 728 | , showarrow = FALSE 729 | , text = traces_imp[[i]]$y[[1]] 730 | , align = 'right' 731 | ) 732 | 733 | annotations[[i]] = l 734 | } 735 | 736 | layout$annotations = annotations 737 | 738 | } 739 | 740 | x = list( traces = traces 741 | , layout = layout 742 | , shapes = shapes 743 | # JS does not make copies of variables thus we pass one to 744 | # change and one to keep. 745 | , shapes_original = shapes 746 | , map_curve = map_curve %>% unname() 747 | , map_trace_2_shape = map_trace_2_shape 748 | , map_type = map_type %>% unname() 749 | , map_color = map_color %>% unname() 750 | , parcats_cols = parcats$line$color 751 | , imp = imp 752 | ) 753 | 754 | # create widget 755 | htmlwidgets::createWidget( 756 | name = 'parcats', 757 | x, 758 | width = width, 759 | height = height, 760 | package = 'parcats', 761 | elementId = elementId 762 | ) 763 | } 764 | 765 | #' Shiny bindings for parcats 766 | #' 767 | #' Output and render functions for using parcats within Shiny 768 | #' applications and interactive Rmd documents. 769 | #' 770 | #' @param outputId output variable to read from 771 | #' @param width,height Must be a valid CSS unit (like \code{'100\%'}, 772 | #' \code{'400px'}, \code{'auto'}) or a number, which will be coerced to a 773 | #' string and have \code{'px'} appended. 774 | #' @param expr An expression that generates a parcats 775 | #' @param env The environment in which to evaluate \code{expr}. 776 | #' @param inline, logical, Default: FALSE 777 | #' @param quoted Is \code{expr} a quoted expression (with \code{quote()})? This 778 | #' is useful if you want to save an expression in a variable. 779 | #' 780 | #' @name parcats-shiny 781 | #' @return No return value, called for side effects 782 | #' @export 783 | parcatsOutput <- function(outputId, width = '100%', height = '100%', inline = FALSE){ 784 | htmlwidgets::shinyWidgetOutput(outputId 785 | , 'parcats' 786 | , width 787 | , height 788 | , package = 'parcats' 789 | , inline = inline 790 | , reportSize = TRUE) 791 | } 792 | 793 | #' @rdname parcats-shiny 794 | #' @export 795 | render_parcats <- function(expr, env = parent.frame(), quoted = FALSE) { 796 | if (!quoted) { expr <- substitute(expr) } # force quoted 797 | htmlwidgets::shinyRenderWidget(expr, parcatsOutput, env, quoted = TRUE) 798 | } 799 | 800 | 801 | 802 | #' @title run parcats shiny demo 803 | #' @examples 804 | #' if (interactive()) { 805 | #' parcats_demo() 806 | #' } 807 | #' @rdname parcats_demo 808 | #' @export 809 | #' @return No return value, called for side effects 810 | parcats_demo <- function() { 811 | 812 | easyalluvial::check_pkg_installed("shiny") 813 | 814 | system.file("shiny/parcats", package = "parcats") %>% 815 | shiny::runApp() 816 | } 817 | --------------------------------------------------------------------------------