Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----include = FALSE----------------------------------------------------------
oldpar <- graphics::par(no.readonly = TRUE)
## ----Fig1-3D-spectros, fig.align='center', fig.height=3.5, fig.width=7.2------
library(SoundShape)
# Sample data from SoundShape
data(cuvieri)
# Select acoustic unit from sample
cuvieri.cut <- seewave::cutw(cuvieri, f=44100, from = 0.05, to=0.45, output="Wave")
# 3D spectrogram
par(mfrow=c(1,2), mar=c(0,2,1,0))
threeDspectro(cuvieri.cut, flim=c(0, 2.5),
colkey=list(plot=FALSE), cex.axis=0.4, cex.lab=0.8, resfac=3)
# Semilandmarks from sampled surface
threeDspectro(cuvieri.cut, flim=c(0, 2.5), plot.type="points",
samp.grid=TRUE, x.length=70, y.length=50, main="Semilandmarks 3D",
colkey=list(plot=FALSE), cex.axis=0.4, cex.lab=0.8)
## ----include = FALSE----------------------------------------------------------
graphics::par(oldpar)
## ----Fig2-2D-spectros, fig.align='center', fig.width=7.2, fig.height=3.5------
# Traditional oscillogram and spectrogram
par(mfrow=c(1,2), mar=c(4,4,2,1)) # view side by side
seewave::oscillo(cuvieri.cut, title="Oscillogram")
seewave::spectro(cuvieri.cut, flim=c(0, 2.5), grid=FALSE, scale=FALSE, main="Spectrogram")
## ----include = FALSE----------------------------------------------------------
graphics::par(oldpar)
## ----citation-----------------------------------------------------------------
citation("SoundShape")
## ----Fig3-centralis-units, fig.align='center', fig.height=3, fig.width=7.2----
# Samples of data from SoundShape package
data(cuvieri)
data(centralis)
data(kroyeri)
# Plot spectro from sample and highlight acoustic units
# centralis
seewave::spectro(centralis, flim = c(0, 4), wl=512, f=44100, ovlp=70, grid=FALSE)
graphics::abline(v=c(0.1, 0.8, 1.08, 1.78, 2.1, 2.8), lty=2)
## ----Fig4-cuvieri-units, fig.align='center', fig.height=3, fig.width=7.2------
# cuvieri
seewave::spectro(cuvieri, flim = c(0,4), wl=512, f=44100, ovlp=70, grid=FALSE)
graphics::abline(v=c(0.05, 0.45, 0.73, 1.13, 1.47, 1.87), lty=2)
## ----Fig5-kroyeri-units, fig.align='center', fig.height=3, fig.width=7.2------
# kroyeri
seewave::spectro(kroyeri, flim = c(0, 4), wl=512, f=44100, ovlp=70, grid=FALSE)
graphics::abline(v=c(0.16, 0.96, 1.55, 2.35, 2.9, 3.8), lty=2)
## ----cut-units----------------------------------------------------------------
# Select acoustic units
cut.centralis <- seewave::cutw(centralis, f=44100, from=0, to=0.9, output = "Wave")
cut.cuvieri <- seewave::cutw(cuvieri, f=44100, from=0, to=0.9, output = "Wave")
cut.kroyeri <- seewave::cutw(kroyeri, f=44100, from=0.2, to=1.1, output = "Wave")
## ----Fig6-window-dimensions, fig.align='center', fig.height=5, fig.width=7.2----
# Spectrogram plots using standardized sound window dimensions
par(mfrow=c(2,2), mar=c(4,4,2,2))
seewave::spectro(cut.centralis, flim=c(0, 4), tlim=c(0, 0.8), main="data(centralis)",
wl=512, f=44100, ovlp=70, grid=FALSE, scale=FALSE)
seewave::spectro(cut.cuvieri, flim=c(0, 4), tlim=c(0, 0.8), main="data(cuvieri)",
wl=512, f=44100, ovlp=70, grid=FALSE, scale=FALSE)
seewave::spectro(cut.kroyeri, flim=c(0, 4), tlim=c(0, 0.8), main="data(kroyeri)",
wl=512, f=44100, ovlp=70, grid=FALSE, scale=FALSE)
## ----include = FALSE----------------------------------------------------------
graphics::par(oldpar)
## ----Fig7-dBlevel-curve, fig.align='center', fig.height=3, fig.width=7.2------
# 2D spectrogram with curves of relative amplitude at -25 dB
par(mfrow=c(1,2), mar=c(4,4,1,1))
s.kro <- seewave::spectro(cut.kroyeri, flim=c(0, 4), tlim = c(0, 0.8),
grid=F, scale=F, f=44100, wl=512, ovlp=70, cont=TRUE,
contlevels = seq(-25, -25, 1), collevels = seq(-40, 0, 0.1))
# 3D spectrogram (with a lower dBlevel for illustrative purpuses)
threeDspectro(cut.kroyeri, dBlevel=40, flim=c(0, 4), tlim=c(0, 0.8), main="",
colkey=list(plot=FALSE), cex.axis=0.4, cex.lab=0.8, resfac=2)
# Set background at -40 dB and remove -Inf values from spectrogram data
for(i in 1:length(s.kro$amp)){if(s.kro$amp[i] == -Inf |s.kro$amp[i] <= -40)
{s.kro$amp[i] <- -40}}
# Add curve of relative amplitude
plot3D::contour3D(x=s.kro$time, y=s.kro$freq, colvar=t(s.kro$amp), z=-25,
plot=T, add=T, addbox=F, col="black", lwd=1.9, nlevels=2, dDepth=0.25)
## ----include = FALSE----------------------------------------------------------
graphics::par(oldpar)
## ----Fig8-sampling-grid, fig.align='center', fig.height=4, fig.width=7.2------
# Using threeDspectro to visualize sampling grid
par(mfrow=c(1,2), mar=c(1,2,1,0))
# As "surface"
threeDspectro(cut.kroyeri, samp.grid=TRUE, x.length=70, y.length=47, plot.type="surface",
dBlevel=25, flim=c(0, 4), tlim=c(0, 0.8), f=44100, wl=512, ovlp=70, main="As 'surface'",
colkey=list(plot=FALSE), cex.axis=0.4, cex.lab=0.8)
# As "points"
threeDspectro(cut.kroyeri, samp.grid=TRUE, x.length=70, y.length=47, plot.type="points",
dBlevel=25, flim=c(0, 4), tlim=c(0, 0.8), f=44100, wl=512, ovlp=70, main="As 'points'",
colkey=list(plot=FALSE), cex.axis=0.4, cex.lab=0.8)
## ----include = FALSE----------------------------------------------------------
graphics::par(oldpar)
## ----pca----------------------------------------------------------------------
# PCA using three-dimensional semilandmark coordinates embeeded in eig.sample
pca.eig.sample <- stats::prcomp(geomorph::two.d.array(eig.sample))
# View summary results
summary(pca.eig.sample)
## ----Fig9-mean-surface, fig.align='center', fig.height=3, fig.width=7.2-------
# Create hypothetical sound surfaces using hypo.surf
# Mean shape configuration (consensus)
hypo.surf(eig.sample, PC="mean", flim=c(0, 4), tlim=c(0, 0.8), x.length=70, y.length=47,
cex.lab=0.7, cex.axis=0.5, cex.main=1)
## ----Fig10-PC1-surface, fig.align='center', fig.height=3, fig.width=7.2-------
# Minimum and maximum deformations - Principal Component 1
hypo.surf(eig.sample, PC=1, flim=c(0, 4), tlim=c(0, 0.8), x.length=70, y.length=47,
cex.lab=0.7, cex.axis=0.5, cex.main=1)
## ----Fig11-PC2-surface, fig.align='center', fig.height=3, fig.width=7.2-------
# Minimum and maximum deformations - Principal Component 2
hypo.surf(eig.sample, PC=2, flim=c(0, 4), tlim=c(0, 0.8), x.length=70, y.length=47,
cex.lab=0.7, cex.axis=0.5, cex.main=1)
## ----Fig12-ordination-plot, fig.align='center', fig.height=5, fig.width=5-----
# PCA using semilandmark coordinates
pca.eig.sample <- stats::prcomp(geomorph::two.d.array(eig.sample))
# Verify names of acoustic units from sample
dimnames(eig.sample)[[3]]
# Based on those names, create factor to use as groups in subsequent ordination plot
sample.gr <- factor(c(rep("centralis", 3), rep("cuvieri", 3), rep("kroyeri", 3)))
# Ordination plot
pca.plot(pca.eig.sample, groups=sample.gr, conv.hulls=sample.gr, leg.pos="bottomright", cex=1.2)
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.