This page depicts the analytical results of all 100 matrices generated by Congreve & Lamsdell [-@Congreve2016] using a ternary plotting approach [@Smith2019], with quartets and partitions used as distance metrics.
The most highly resolved tree is progressively reduced by collapsing nodes with a support value below an increasing threshold.
library("Ternary") library("CongreveLamsdell2016") data('clBremPartitions', 'clBremQuartets', 'clMkvPartitions', 'clMkvQuartets', 'clBootFreqPartitions', 'clBootFreqQuartets', 'clBootGcPartitions', 'clBootGcQuartets', 'clJackFreqPartitions', 'clJackFreqQuartets', 'clJackGcPartitions', 'clJackGcQuartets', 'clCI')
PCH_MK <- 1 # circle PCH_EQ <- 61 #'=' PCH_XX <- 18 # 183 #'.' is invalid in some locales PCH_IW <- 2 #triup PCH_IC <- 17 #triupfilled TREE <- 2 COL <- c( 'mk' = paste0(cbPalette8[4], '99'), 'eq' = paste0(cbPalette8[8], '99'), 'k1' = paste0(cbPalette8[6], '42'), 'k2' = paste0(cbPalette8[6], '42'), 'k3' = paste0(cbPalette8[6], '42'), 'k5' = paste0(cbPalette8[6], '42'), 'kX' = paste0(cbPalette8[6], '99'), 'kC' = paste0(cbPalette8[2], '99')) PCH <- c( brem = 2, bootG = 0, bootF = 5, jackG = 3, jackF = 4, mk = 1 ) MARGINS <- c(2.8, 0.3, 0.3, 0.3) ROWS <- c(2, 3) TernaryQuarts <- function(TREE=TREE, an='eq', zoom=1, padding=0.1) { clInitializeTernaryQuarts(zoom=zoom, padding=padding) clPlotQuartets(pch=PCH['brem'] , cex=2, clBremQuartets[an], TREE) clPlotQuartets(pch=PCH['bootF'], cex=2, clBootFreqQuartets[an], TREE) clPlotQuartets(pch=PCH['bootG'], cex=2, clBootGcQuartets[an], TREE) clPlotQuartets(pch=PCH['jackF'], cex=2, clJackFreqQuartets[an], TREE) clPlotQuartets(pch=PCH['jackG'], cex=2, clJackGcQuartets[an], TREE) clPlotQuartets(pch=PCH['mk'], clMkvQuartets, TREE, cex=2, col=COL['mk']) # Return: invisible() } TernaryAllQuarts <- function(an='eq', zoom=1, padding=0.1) { clInitializeTernaryQuarts(zoom=zoom, padding=padding) clPlotTheseAverageQuartets(pch=PCH['brem'] , cex=2, col=COL[an], clBremQuartets[[an]]) clPlotTheseAverageQuartets(pch=PCH['bootF'], cex=2, col=COL[an], clBootFreqQuartets[[an]]) clPlotTheseAverageQuartets(pch=PCH['bootG'], cex=2, col=COL[an], clBootGcQuartets[[an]]) clPlotTheseAverageQuartets(pch=PCH['jackF'], cex=2, col=COL[an], clJackFreqQuartets[[an]]) clPlotTheseAverageQuartets(pch=PCH['jackG'], cex=2, col=COL[an], clJackGcQuartets[[an]]) clPlotTheseAverageQuartets(pch=PCH['mk'], clMkvQuartets, cex=2, col=COL['mk']) # Return: invisible() } TernaryParts<-function(TREE=TREE, an='eq') { clInitializeTernarySplits() title(main="\nPartitions", cex.main=0.8) HorizontalGrid(19) clPlotSplits(pch=PCH['brem'] , cex=2, col=COL[an], clBremPartitions[[an]], TREE) clPlotSplits(pch=PCH['bootF'], cex=2, col=COL[an], clBootGcPartitions[[an]], TREE) clPlotSplits(pch=PCH['bootG'], cex=2, col=COL[an], clBootFreqPartitions[[an]], TREE) clPlotSplits(pch=PCH['jackF'], cex=2, col=COL[an], clJackGcPartitions[[an]], TREE) clPlotSplits(pch=PCH['jackG'], cex=2, col=COL[an], clJackFreqPartitions[[an]], TREE) clPlotSplits(pch=PCH['mk'], cex=2, clMkvPartitions, TREE, col=COL['mk']) # Return: invisible() } TernaryAllParts<-function(an='eq') { clInitializeTernarySplits() title(main="\nPartitions", cex.main=0.8) HorizontalGrid(19) clPlotTheseAverageSplits(pch=PCH['brem'] , col=COL[an], cex=2, clBremPartitions[[an]]) clPlotTheseAverageSplits(pch=PCH['bootF'], col=COL[an], cex=2, clBootGcPartitions[[an]]) clPlotTheseAverageSplits(pch=PCH['bootG'], col=COL[an], cex=2, clBootFreqPartitions[[an]]) clPlotTheseAverageSplits(pch=PCH['jackF'], col=COL[an], cex=2, clJackGcPartitions[[an]]) clPlotTheseAverageSplits(pch=PCH['jackG'], col=COL[an], cex=2, clJackFreqPartitions[[an]]) clPlotTheseAverageSplits(pch=PCH['mk'], cex=2, clMkvPartitions, col=COL['mk']) # Return: invisible() } AddLegend <- function(pos='bottomright', an='eq') { legend(pos, cex=0.8, bty='n', lty=1, pch=PCH[c('mk', 'brem', 'bootF', 'bootG', 'jackF', 'jackG')], pt.cex=1.2, col=c(COL['mk'], rep(COL[an], 5)), legend=c('Markov', 'Bremer', 'BootFreq', 'Boot GC', 'Jack Freq', 'Jack GC') ) } CompareNodeSupports <- function (i) { x <- Sys.setlocale("LC_ALL", "C") # allows PCH=183 TernaryQuarts(TREE=i, an='eq') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8) arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270) TernaryQuarts(TREE=i, an='eq', zoom=3, padding=0.01) title(main=paste0("\nDataset ", i, ": CI=",round(clCI[i], 2), ". Equal weights"), cex.main=1.2) TernaryParts(TREE=i, an='eq') arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270) AddLegend(an='eq') TernaryQuarts(TREE=i, an='k3') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8) arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270) TernaryQuarts(TREE=i, an='k3', zoom=3, padding=0.01) title(main="\nImplied weights (k = 3)", cex.main=1.2) TernaryParts(TREE=i, an='k3') arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270) AddLegend(an='k3') }
```{R Averages, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=c(2, ROWS[2]), mar=MARGINS) TernaryAllQuarts(an='eq') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)
arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)
TernaryAllQuarts(an='eq', zoom=3, padding=0.01) title(main="\nAll datasets (averaged). Equal weights.", cex.main=1.2)
TernaryAllParts(an='eq')
arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)
AddLegend(an='eq')
TernaryAllQuarts(an='k3') title(main=paste0("\nQuartets"), cex.main=0.8) arrows(sqrt(3/4) * 0.5, 0.5, sqrt(3/4) * 0.8, 0.5, length=0.1) text (sqrt(3/4) * 0.65, 0.5, pos=3, 'Decreasing resolution', cex=0.8)
arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing divergence', cex=0.8, srt=270)
TernaryAllQuarts(an='k3', zoom=3, padding=0.01)
title(main="\nImplied weights (k = 3)", cex.main=1.2) TernaryAllParts(an='k3')
arrows(sqrt(3/4) * 0.98, 0.40, sqrt(3/4) * 0.98, 0.20, length=0.1) text (sqrt(3/4) * 1.01, 0.30, pos=3, 'Increasing RF distance', cex=0.8, srt=270)
AddLegend(an='k3')
Though the Bootstrap GC metric systematically produces the lowest normalized tree distances (SD/MaxI), it is not significantly better than other methods. The following table reports P values that fail to reject the null hypothesis that the specified node support metric is equally good at ascribing incorrect nodes the lowest support values. ```{R compare-best, results='asis', echo=FALSE} if (requireNamespace('Quartet', quietly = TRUE)) { TreeBests <- function (dataset) vapply(dataset, function (item) apply(apply(item, 1, function (x) Quartet::QuartetDivergence(t(x))), 1, max), double(dim(dataset[[1]])[3])) treeBests <- vapply(list(clBootGcQuartets, clBootFreqQuartets, clJackGcQuartets, clJackFreqQuartets, clBremQuartets), TreeBests, matrix(0, nrow=dim(clBootGcQuartets[[1]])[3], ncol=length(clBootGcQuartets)) ) tests <- apply(treeBests, 2, function (slice) apply(slice, 2, function (column) t.test(column, slice[, 1])$p.value)) rownames(tests) <- c( 'Bootstrap GC', 'Bootstrap Freq', 'Jackknife GC', 'Jackknife Freq', 'Bremer') knitr::kable(tests) } else { message("Package 'Quartet' is not available; cannot display table.") }
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(1)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(2)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(3)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(4)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(5)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(6)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(7)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(8)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(9)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(10)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(11)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(12)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(13)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(14)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(15)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(16)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(17)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(18)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(19)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(20)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(21)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(22)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(23)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(24)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(25)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(26)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(27)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(28)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(29)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(30)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(31)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(32)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(33)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(34)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(35)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(36)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(37)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(38)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(39)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(40)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(41)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(42)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(43)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(44)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(45)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(46)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(47)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(48)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(49)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(50)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(51)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(52)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(53)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(54)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(55)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(56)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(57)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(58)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(59)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(60)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(61)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(62)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(63)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(64)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(65)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(66)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(67)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(68)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(69)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(70)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(71)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(72)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(73)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(74)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(75)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(76)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(77)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(78)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(79)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(80)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(81)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(82)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(83)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(84)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(85)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(86)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(87)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(88)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(89)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(90)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(91)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(92)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(93)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(94)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(95)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(96)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(97)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(98)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(99)
```{R, echo=FALSE, fig.width=9, fig.height=6} par(mfrow=ROWS, mar=MARGINS); x <- CompareNodeSupports(100)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.