test_that("MST example plots as expected", { skip_if_not_installed("graphics", "4.3") skip_if_not_installed("vdiffr", "1.0") vdiffr::expect_doppelganger("MST example plot", function() { distances <- structure( c(3, 2.3, 2.3, 2.3, 3, 1.7, 2.3, 2.3, 2.3, 4.5, 4.5, 1.7, 1.7, 2.3, 3, 2.3, 1.7, 2.3, 2.3, 3.8, 4.4, 1.6, 3.1, 2.3, 2.6, 3, 1.5, 2.6, 4.7, 4.6, 2.6, 2.3, 1.5, 3, 2.6, 1.5, 4.3, 4.7, 1.7, 2.6, 1.5, 3, 1.6, 4.6, 4.7, 2.3, 2.3, 1.7, 1.7, 4.4, 3.8, 3.1, 3.1, 1.5, 4.4, 4.4, 3.1, 2.6, 4.2, 4.8, 3, 4.8, 4.2, 4.7, 4.3, 1.6), class = "dist", Size = 12L, Diag = FALSE, Upper = FALSE ) # dput(round(ClusteringInfoDist(as.phylo(5:16, 8)), 1)) mapping <- structure( c(0.75, 0.36, 0.89, 0.85, 0.89, 0.36, 0.64, 0.6, 0.6, 0.85, -3.4, -3.4, 0, -0.25, 1.33, 0.39, -1.33, 0.25, 0, -1.52, 1.52, -0.39, -0.58, 0.58), dim = c(12L, 2L) ) # dput(round(cmdscale(distances, k = 2), 2)) mstEnds <- MSTEdges(distances) # Set up blank plot plot(mapping, asp = 1, frame.plot = FALSE, ann = FALSE, axes = FALSE, type = "n") # Add MST MSTSegments(mapping, mstEnds, col = StrainCol(distances, mapping, mstEnds)) # Add points at end so they overprint the MST points(mapping) PlotTools::SpectrumLegend( "bottomleft", legend = c("Extended", "Median", "Contracted"), bty = "n", y.intersp = 2, lend = "square", palette = hcl.colors(256L, "RdYlBu", rev = TRUE) ) }) }) test_that("StrainCol() handles zeroes", { distances <- dist(c(1, 1, 10, 100)) mapping <- cmdscale(distances) expect_equal(attr(StrainCol(distances, mapping), "logStrain")[[1]], Inf) })