Public
Edited
Jul 30, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
maples = d3.csv(
"https://portal.edirepository.org/nis/dataviewer?packageid=knb-lter-hbr.157.3&entityid=5c415a399b00430d35d13c31312f1e53",
d3.autoType
)
Insert cell
Insert cell
Insert cell
Insert cell
maples
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
Insert cell
Insert cell
maples2003 = maples
.map((d) => ({
year: d.Year,
watershed: d.Watershed,
stemLength: d.StemLength,
leafMass: d.LeafDryMass,
stemMass: d["StemDryMass"],
leafArea: d.CorrectedLeafArea
}))
.filter((d) => d.year === 2003)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
PlotMatrix()
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
ML = require("https://www.lactame.com/lib/ml/6.0.0/ml.min.js")
Insert cell
maples2003LM_reference = new ML.SimpleLinearRegression(
maples2003_reference.map((d) => d.stemLength),
maples2003_reference.map((d) => d.stemMass)
)
Insert cell
maples2003LM_calcium = new ML.SimpleLinearRegression(
maples2003_calcium.map((d) => d.stemLength),
maples2003_calcium.map((d) => d.stemMass)
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
import { scale, asMatrix } from "@chrispahm/hierarchical-clustering"
Insert cell
maples2003_scaled = scale(maples2003)
Insert cell
maples2003_array = maples2003_scaled.map((d) => [
d.stemLength,
d.leafMass,
d.stemMass,
d.leafArea
])
Insert cell
maples2003_kmeans = new ML.KMeans(maples2003_array, 2)
Insert cell
maples2003DTC = maples2003.map((d, i) => ({
...d,
cluster_no: maples2003_kmeans.clusters[i]
}))
Insert cell
Plot.plot({
color: { legend: true },
marks: [
Plot.text(maples2003DTC, {
x: "stemLength",
y: "stemMass",
text: "cluster_no",
stroke: "watershed",
fontWeight: 100,
fontSize: 15,
tip: true
})
]
})
Insert cell
clusterCounts = d3.rollup(
maples2003DTC,
(v) => v.length,
(d) => d.watershed,
(d) => d.cluster_no
)
Insert cell
Insert cell
Insert cell
Insert cell
maples2003_pca_scaled = scale(
maples2003.map(({ year, watershed, ...rest }) => rest)
)
Insert cell
maples2003_pca_array = maples2003_pca_scaled.map(Object.values)
Insert cell
// Noticed that the array I created for K means is not the same as that for PCA.
maples2003_array === maples2003_pca_array
Insert cell
maples2003PCA = new ML.PCA(maples2003_pca_array)
Insert cell
maples2003PCA.getExplainedVariance()
Insert cell
maples2003PCA.getCumulativeVariance()
Insert cell
Insert cell
viewof loadings
Insert cell
Insert cell
viewof scores
Insert cell
Insert cell
Insert cell
scaling_factor = 5
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more