Public
Edited
Sep 26, 2023
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
myLinearScale = d3.scaleLinear().domain([0, 1]).range([0, 100])
Insert cell
myLinearScale1 = d3.scaleLinear([0, 1], [0, 100])
Insert cell
myLinearScale1(0.5)
Insert cell
iris
Insert cell
myValues = iris.map((d) => d.sepalLength)
Insert cell
minValue = d3.min(myValues)
Insert cell
maxValue = d3.max(myValues)
Insert cell
extentValues = d3.extent(myValues)
Insert cell
extentValues1 = d3.extent(iris, (d) => d.sepalLength)
Insert cell
d3.scaleLinear().domain(extentValues).range([0, 1])(5)
Insert cell
d3
.scaleLinear()
.domain(d3.extent(extract("sepalLength", iris)))
.range([0, 1])(5)
Insert cell
extract = (value, data) => {
return data.map((d) => d[value]);
}
Insert cell
Insert cell
Insert cell
myOrdinalScale = d3
.scaleOrdinal()
.domain(["apple", "orange", "banana"])
.range(["red", "orange", "yellow"])
Insert cell
htl.html`<div style='background-color: ${myOrdinalScale(
"banana"
)}'>${"banana"}</div>`
Insert cell
myOrdinalScale("apple")
Insert cell
myDataOrdinalScale = d3
.scaleOrdinal()
.domain([...new Set(iris.map((d) => d.species))])
.range(["red", "orange", "yellow"])
Insert cell
myDataOrdinalScale("setosa")
Insert cell
iris
Insert cell
// Array.from(new Set(iris.map((d) => d.species)))
[...new Set(iris.map((d) => d.species))]
Insert cell
Insert cell
Insert cell
Insert cell
iris
Insert cell
{
const width = 600;
const height = 400;
const margin = { top: 20, bottom: 20, left: 50, right: 50 };

const svg = d3
.create("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.style("border", "1px dotted #000");

const g = svg
.append("g")
.attr("transform", `translate(${margin.left}, ${margin.top})`);

// g.append("rect").attr("width", width).attr("height", height);

const x = d3
.scaleLinear()
.domain(d3.extent(iris, (d) => d["sepalLength"]))
.range([0, width]);

const y = d3
.scaleLinear()
.domain(d3.extent(iris, (d) => d["sepalWidth"]))
.range([height, 0]);

const colorScale = d3
.scaleOrdinal()
.domain(Array.from(new Set(iris.map((d) => d.species))))
.range(["red", "green", "blue"]);

g.append("g")
.selectAll("circle")
.data(iris)
.join("circle")
.attr("r", 3)
.attr("cx", (d) => x(d.sepalLength))
.attr("cy", (d) => y(d.sepalWidth))
.style("fill", (d) => colorScale(d.species));

return svg.node();
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
iris_scatterplot = {
const width = 500;
const height = 300;
const marginTop = 25;
const marginRight = 20;
const marginBottom = 35;
const marginLeft = 40;

// Prepare the scales for positional encoding.
const x = d3
.scaleLinear()
.domain(d3.extent(iris, (d) => d[x_selected]))
.nice()
.range([0, width]);

const y = d3
.scaleLinear()
.domain(d3.extent(iris, (d) => d[y_selected]))
.nice()
.range([height, 0]);

// Create the SVG container.
const svg = d3
.create("svg")
.attr("width", width + marginLeft + marginRight)
.attr("height", height + marginTop + marginBottom);

const g = svg
.append("g")
.attr("transform", `translate(${marginLeft}, ${marginTop})`);

// Create the axes.
g.append("g")
.attr("transform", `translate(0,${height})`)
.call(d3.axisBottom(x).ticks(width / 80));

g.append("g").call(d3.axisLeft(y));

const Set1_Cynthia_Brewer = [
"#e41a1c",
"#377eb8",
"#4daf4a",
"#984ea3",
"#ff7f00",
"#ffff33",
"#a65628",
"#f781bf",
"#999999"
];

const colorScale = d3
.scaleOrdinal()
.domain([...new Set(iris.map((d) => d.species))])
.range(Set1_Cynthia_Brewer.slice(0, 3));

g.append("g")
.selectAll("circle")
.data(iris)
.join("circle")
.attr("cx", (d) => x(d[x_selected]))
.attr("cy", (d) => y(d[y_selected]))
.style("fill", (d) => colorScale(d.species))
.attr("r", 4);

return svg.node();
}
Insert cell
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from(new Set(iris.map((d) => d.species)))
Insert cell
// ... spread
[...new Set(iris.map((d) => d.species))]
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
Insert cell
Insert cell
iris.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

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