Morphing Projections
morph_center(proj, half_range)
morph_identity(proj, half_range)
morph_radial(proj, half_range, p_eff)
proj | a projection matrix |
---|---|
half_range | scale factor for projection |
p_eff | Effective dimensionality of reference data set, see |
A matrix with dimensions the same as proj
.
These functions are designed to alter the resulting
projection after basis generation with the tourr and will change how
the projections are animated with limn_tour()
and limn_tour_link()
.
For morph_center()
the projection is centered and then scaled by
the half range, while morph_identity()
only scales by half range.
morph_radial()
is an implemenation of the burning sage algorithm
available in tourr::display_sage()
.
proj <- matrix(rnorm(20), ncol = 2)
half_range <- compute_half_range(proj)
morph_center(proj, half_range)
#> [,1] [,2]
#> [1,] -0.04892651 -0.43451771
#> [2,] -0.02915757 -0.03858529
#> [3,] -0.14311967 -0.26702241
#> [4,] -0.21912189 -0.45454275
#> [5,] 0.76023032 0.05175684
#> [6,] 0.24859500 0.19001058
#> [7,] -0.79301248 0.60920540
#> [8,] -0.12712532 0.09763497
#> [9,] 0.25993593 0.42904600
#> [10,] 0.09170218 -0.18298562
#> attr(,"scaled:center")
#> [1] 0.35703981 0.04173324
morph_identity(proj, half_range)
#> [,1] [,2]
#> [1,] 0.12126306 -0.41462480
#> [2,] 0.14103200 -0.01869238
#> [3,] 0.02706990 -0.24712950
#> [4,] -0.04893232 -0.43464983
#> [5,] 0.93041989 0.07164975
#> [6,] 0.41878457 0.20990350
#> [7,] -0.62282291 0.62909831
#> [8,] 0.04306425 0.11752788
#> [9,] 0.43012550 0.44893891
#> [10,] 0.26189174 -0.16309270
morph_radial(proj, half_range, p_eff = 2)
#> x y
#> [1,] -0.43451771 -0.04892651
#> [2,] -0.03858529 -0.02915757
#> [3,] -0.26702241 -0.14311967
#> [4,] -0.45454275 -0.21912189
#> [5,] 0.05175684 0.76023032
#> [6,] 0.19001058 0.24859500
#> [7,] 0.60920540 -0.79301248
#> [8,] 0.09763497 -0.12712532
#> [9,] 0.42904600 0.25993593
#> [10,] -0.18298562 0.09170218