The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Many packages exist to visualize trait data for biological species. deeptime similarly has a few novel ways to help you plot your data in useful ways. We’ll first load some packages and example data so we can demonstrate some of this functionality.
# Load deeptime
library(deeptime)
# Load other packages
library(ggplot2)
library(dplyr)
# Load dispRity for example data
library(dispRity)
data(demo_data)
# Load paleotree for example data
library(phytools)
data(mammal.tree)
data(mammal.data)
A common way to visualize trait data, especially for fossil species,
is to show the two-dimensional trait distribution for several time
intervals. This allows the viewer to easily compare the trait
distribution through time. However, producing such a plot has
historically been very time intensive, often involving the use of custom
code and image editing software (e.g., Inkscape). While a single function to
accomplish such a visualization still does not exist for
{ggplot2}
(yet…), the coord_trans_xy()
function can be used to generate a similar plot with sheared trait space
across several time intervals.
# make transformer
library(ggforce)
trans <- linear_trans(shear(.75, 0))
# prepare data to be plotted
crinoids <- as.data.frame(demo_data$wright$matrix[[1]][, 1:2])
crinoids$time <- "before extinction"
crinoids$time[demo_data$wright$subsets$after$elements] <- "after extinction"
# a box to outline the trait space
square <- data.frame(V1 = c(-.6, -.6, .6, .6), V2 = c(-.4, .4, .4, -.4))
ggplot() +
geom_segment(
data = data.frame(
x = -.6, y = seq(-.4, .4, .2),
xend = .6, yend = seq(-0.4, .4, .2)
),
aes(x = x, y = y, xend = xend, yend = yend),
linetype = "dashed", color = "grey"
) +
geom_segment(
data = data.frame(
x = seq(-.6, .6, .2), y = -.4,
xend = seq(-.6, .6, .2), yend = .4
),
aes(x = x, y = y, xend = xend, yend = yend),
linetype = "dashed", color = "grey"
) +
geom_polygon(data = square, aes(x = V1, y = V2), fill = NA, color = "black") +
geom_point(data = crinoids, aes(x = V1, y = V2), color = "black") +
coord_trans_xy(trans = trans, expand = FALSE) +
labs(x = "PCO1", y = "PCO2") +
theme_classic() +
facet_wrap(~time, ncol = 1, strip.position = "right") +
theme(panel.spacing = unit(1, "lines"), panel.background = element_blank())
The disparity_through_time()
function accomplishes
nearly all of the work for you if you are comfortable plotting within
the {lattice}
framework (base R). Note that it may take
some tweaking (especially the aspect
argument) to get the
results to look the way you want.
crinoids$time <- factor(crinoids$time)
disparity_through_time(time ~ V2 * V1,
data = crinoids, groups = time, aspect = c(1.5, .6),
xlim = c(-.6, .6), ylim = c(-.5, .5),
col.regions = "lightyellow", col.point = c("red", "blue"),
par.settings = list(
axis.line = list(col = "transparent"),
layout.heights =
list(
top.padding = -20, main.key.padding = 0,
key.axis.padding = 0, axis.xlab.padding = 0,
xlab.key.padding = 0, key.sub.padding = 0,
bottom.padding = -20
),
layout.widths =
list(
left.padding = -10, key.ylab.padding = 0,
ylab.axis.padding = 0, axis.key.padding = 0,
right.padding = 0
)
)
)
Often, trait data will be accompanied with a phylogeny. You may want
to visualize both your phylogeny, the traits of your species, and the
evolution of the trait along your phylogeny. To accomplish this, you can
create a two-dimensional phylomorphospace. The {phytools}
package has the phytools::phylomorphospace()
function for
accomplishing this in base R. The geom_phylomorpho()
function in deeptime will help you accomplish this with
ggplot()
. Note that labels can be added using
geom_label()
or ggrepel::geom_label_repel()
,
but they are not demonstrated here because they would obscure the
phylogenetic relationships.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.