barleyplot2 = {
let speciesCounts = {};
let maxData = {};
let filtered = barley.filter(
(e) =>
e.site == "Waseca" ||
e.site == "Grand Rapids" ||
e.site == "University Farm"
);
let data = filtered.flatMap((row, i) => {
if (speciesCounts[row.site] == undefined) {
speciesCounts[row.site] = { val: 0 };
maxData[row.site] = {
val: row["yield"],
ind: speciesCounts[row.site].val
};
}
speciesCounts[row.site].val += 1;
if (row["yield"] > maxData[row.site].val) {
maxData[row.site] = {
val: row["yield"],
ind: speciesCounts[row.site].val
};
}
return {
...row,
totalIndex: i,
siteIndex: speciesCounts[row.site].val
};
});
let maxArray = [];
for (let key in maxData) {
maxArray.push({
site: key,
val: maxData[key].val,
ind: maxData[key].ind
});
}
let plt = Plot.plot({
y: { label: "Yield" },
x: { label: "Site Index" },
width: 767 - 252,
height: 220,
marks: [
Plot.dot(maxArray, { x: "ind", y: "val", stroke: "site", r: 10 }),
Plot.dot(data, {
x: "siteIndex",
y: "yield",
z: "site",
stroke: "site"
}),
Plot.line(data, {
x: "siteIndex",
y: "yield",
z: "site",
stroke: "#bdc0c69e"
})
]
});
return plt;
}