Published
Edited
Sep 17, 2019
Insert cell
Insert cell
Type JavaScript, then Shift-Enter. Ctrl-space for more options. Arrow ↑/↓ to switch modes.

Insert cell
dataset = {
numPoints;
return generateRandomDataset(numPoints)
}
//dataset = generateRandomDataset(50)

Insert cell
//dataset2 = {
// points;
// return generateRandomDataset(points)
//}
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
viewof points = number({value:50, title:"Número de pontos", submit:"Atualizar"})
Insert cell
dataset2 = generateRandomDataset(points)
Insert cell
updateScales = function(dataset2) {
xScale.domain([0, d3.max(dataset2, d => d[0])])
.range([0, width])
yScale.domain([0, d3.max(dataset2, d => d[1])])
.range([height, 0])
}
Insert cell
updateScatter = function(dataset2) {
// Removendo elementos sem dados
vis.selectAll("circle")
.data(dataset2)
.exit()
.remove()
// adiciona novos elementos
vis.selectAll("circle")
.data(dataset2)
.enter()
.append("circle")
.attr("cx", d => xScale(d[0]))
.attr("cy", d => yScale(d[1]))
.attr("r", 4)
// atualiza os elementos existentes
vis.selectAll("circle")
.data(dataset2)
.attr("cx", d => xScale(d[0]))
.attr("cy", d => yScale(d[1]))
.attr("r", 4)
// atualiza os eixos
vis.select(".x.axis")
.call(xAxis)
vis.select(".y.axis")
.call(yAxis)
updateScales(dataset2)
}
Insert cell
updateScatter(dataset2)
Insert cell
vis = {
// Inicialização da Visualização
d3.select(scatter2).select("#chart").remove()
// Depois adicionamos um elemento g no svg que vai transladar a origem
// do gráfico como sendo a origem da área útil do gráfico
let svg = d3.select(scatter2).append('g')
.attr("id", "chart")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.attr("class", "x axis")
.call(xAxis)
svg.append("text")
.attr("transform", "translate(" + (width/2) + "," + (height + margin.bottom) + ")")
.attr("class", "label")
.text("Eixo X")

svg.append("g")
.attr("class", "y axis")
.call(yAxis)

svg.append("text")
.attr("class", "label")
.attr("transform", "rotate(-90)")
.attr("y", 0 - margin.left)
.attr("x",0 - (height / 2))
.attr("dy", "10")
.text("Eixo Y")
return svg
}
Insert cell
d3 = require('d3')
Insert cell
import {button, number} from "@jashkenas/inputs"
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