ide, as a utility for estimating intrinsic data dimensionalityexpect_equal(class(x), c("gg", "ggplot")) to expect_true(inherits(x, c("ggplot", "ggplot2::ggplot"))) according to https://github.com/tidyverse/ggplot2/issues/6498animate_plotly backing out of experimental dev to support plotly subplots, especially for use by cheem::global_viewplot_pca_scree testspinifex::save_history instead of verbose tourr::save_historyexpect_equal(class(x), c("gg", "ggplot")) to expect_true(inherits(x, c("ggplot", "ggplot2::ggplot"))) according to https://github.com/tidyverse/ggplot2/issues/6498animate_gganimate asking for gifski to be installed to render to gif (hopefully, preventing some users saving the gif to many png files)animate_gganimate to dontrun (from donttest) trying to fix rhub errorsproto_text_repel implementing ggrepl::geom_text_repel, only works with animate_gganimateproto_text now has more flexible labels and examples using themrun_app, weather and breast cancerproto_basis1d; aggregated 2 rows to 1plot_pca quick pca plotsplot_pca_scree quick pca plot with scree plotsave_history message is silenced when verbose = FALSEdevMessage for development purposessize with linetype in line geoms..ndensity.. with after_stat(ndensity) in density geomsgganimate documentation from \\donttest to \\dontrun in alignment with gganimate documentation. (Else some OS builds fail, with no mechanism to troubleshoot)manual_tourmanual_tour and proto_density, and bringing your own basisbasis_olda & .lapply_rep_lenproto_basis1d() has an text_offset argument for the horizontal position of text labels\\dontrun's to \\donttest'sgc() calls, too expensive for the minor issues it tried to mitigateproto_density() now changes the aspect ratio to 1/2 (y/x), twice as wideanimate_plotly() will change the x scaleratio to 2 (for non plotly::subplot animations)map_relative(); position = "left" or "right" is fully off outside of the data and slightly smallerproto_*() default; decreasing the text size (5 -> 4)proto_*() default; decreasing the line size a (1 -> .6)filmstrip & facet_wrap_tour(): adds theme for borders to help distinguish facetstheme_spinifex() to include shading and strip outline consistent with the above pointggtour(), such that tours don't want too far to the sides as they were in cheem radial tourstheme_spinifex(): tightening margins, facet strip outlines, and better separating theme elements from ggtour default settingsfacet_wrap_tour(), for faceting toursproto_frame_cor2(), adds text for the within-frame correlation squaredappend_fixed_y(), add/overwrite data y column to fixed values, such as for the height of predicted values or residuals of a modeldraw_basis() static ggplot2 variant of proto_basis, that accepts a basis directly without requiring ggtour initializationproto_* functions have row_index argument; allowing for subsetting that is compatible with faceting and appending a fixed y! By default, proto_point() will plot non-selected points in faint grey, behind selected pointstheme_spinifex() changed removing the duplicate legend display, fewer warnings, and less frame oddities (geom existence issues) with animate_plotlyanimate_* functionsggtour() synchronizes angle usage with {tourr} toursmanual_tour() and related functions now handle 1D projectionsproto_highlight/1d() for highlighting specific points in ggtoursfilmstrip(), creates a ggplot faceting the frames of a ggtour for a static outputpenguins_na.rm, from palmerpenguins::penguins, removed NA
rows & reordered columnsrownum_index to proto_text, for labeling subsetsspinifex::save_history, muting the noisy execution of tourr::save_history?ggplot_tour() to get started!!
-- 10x new proto_* functions, essentially geoms_* for animated tours:
basis/1d, point, origin/1d, density, text, hex, default/1d.
-- 2x animation funcs; animate_plotly() and aniamte_gganimate()
-- 2x internal utility functionsvignette("ggproto_api", "spinifex")BeastCancer_na.rm datasetfor loopsmanip_var_of(basis) suggests a variable to used based on the rank of the contributions of the basis.Basis_* functions to find features of interest, powered by {Rdimtools}.
basis_olda()basis_odp()basis_onpp()basis_olpp()New util functions:
scale_sd() center and scale each variable by it's standard deviationscale_01() center and scale each variable to be between [0, 1]basis_half_circle(), variable agnostic basis with minimal variable dependenceas_history_array(), coerces an array of bases into the same attributes and class as returns of tourr::save_history()view_basis() and oblique_basis(), no longer listed in view_frame() documentationrender_plotly() going longer than 10 secondsggproto, accepts a list of {ggplot2} objects for more control over visual outputaes_args, accepts a list of arguments to pass into the aes() call within geom_point(). This is used for variable mappings, such as color, but needs to be qualified as this is standard evaluationidentity_args, accepts a list of arguments to pass call within geom_point(), but outside of aes(). This is used for scalar options or manually mapped vector such as point size or alphaPimaIndiansDiabetes_long & PimaIndiansDiabetes_widescale_axes() to automatically scale to data rather than assume the data is scaled to [0, 1]view_basis() and oblique_basis() in favor of view_frame()view_manip_space()geom_point(aes(...)) instead of hard-coded argumentsggplot2::geom_point(...)gganimate::anim_save() in render_gganimate()htmlwidgets::saveWidget() in render_plotly()run_app("radial_tour")To accommodate interactive use, rather than predefined paths:
oblique_basis()oblique_frame()run_app() New shiny app!map_absolute()is_orthonormal() slightly more general than tourr::is_orthonormal()Initial submission to CRAN. Vignette: "spinifex"
- play_tour_path()
play_manual_tour()view_basis()view_manip_space()