Public
Edited
Jan 27, 2023
31 forks
Insert cell
Insert cell
Insert cell
Insert cell
d3 = require("d3@7")
Insert cell
import {vl} from '@vega/vega-lite-api'
Insert cell
Insert cell
//IMPORT YOUR GIST HERE
titanic = d3.csv("https://gist.githubusercontent.com/krispybird/56bbacb2dfd84c7c6083c62d62a5417a/raw/1b937a4e7404920ea6d3f729611ec06d43e7ae8e/titanic_train.csv")
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
titanicParsed = {
for (let i=0;i<titanic.length;i++)
{
titanic[i].Age = +titanic[i].Age;
//what other fields in titanic should be converted to a number? Add them below
//Be careful of the capitalization of fields - Javascript is case sensitive!
}
return titanic;
}

Insert cell
Insert cell
titanicCleanedD3 =
d3.csv("https://gist.githubusercontent.com/krispybird/56bbacb2dfd84c7c6083c62d62a5417a/raw/1b937a4e7404920ea6d3f729611ec06d43e7ae8e/titanic_train.csv", function(d) {
return {
age: +d.Age,


//what values should we convert? fill in the blanks
//think about what data fields we want to return --- not all are cloned automatically!
};
})
Insert cell
Insert cell
Insert cell
//the => Arrow function is a shorthand way of writing a function
//It is equivalent to d = function(){
// ...
// return a;
//}

//a function is called on every element in array titanic2, and creates a new array called titanicMap
//for every element in titanicMap, the age key is assigned a value corresponding to the numerical value of titanic2
titanicMap = titanic.map(d => {
var a = d;
a.Age = +d.Age;

//remember what other fields we want to add in
return a;

})
Insert cell
Insert cell
titanicMap2 = titanic.map(d => {
return {
name: d.Name,
age: +d.Age,
sibsp: +d.SibSp,
parch: +d.Parch,
fare: +d.Fare
};
})
Insert cell
Insert cell
//Let's get the max age of who was on the titanic

//try creating a variable called ageMax and find the age of the oldest person on the titanic
ageMax = {
//write a loop here
//return (maxAge)
}

Insert cell
Insert cell
{
//Let's do this with d3.mean() now. We'll first have to use map to create an array with just the ages.

}
Insert cell
Insert cell
//return your answers here
Insert cell
Insert cell
firstClass = titanicMap.filter(function(d) {
return d.CClass == 1});
Insert cell
"The number of passengers in first class is: " + firstClass.length
Insert cell
Insert cell
//Try it here
{

}
Insert cell
Insert cell
//try to find the answer here for second class
//hint: you can use d3.mean to find the average age of passengers in second class

Insert cell
//try to find the answer here for third class
//hint: you can use d3.mean to find the passengers in third class
Insert cell
Insert cell
function calculateTicket()
{
//calculate the ticket inside this function
//return name + "paid: $" + ticket
}

Insert cell
calculateTicket();
Insert cell
Insert cell
//
Insert cell
Insert cell
Insert cell
vl.markTick()
.data(titanicMap)
.encode(
vl.x().fieldQ('Fare')
)
.render()
Insert cell
Insert cell
Insert cell
Insert cell
//follow along here

Insert cell
Insert cell
Insert cell
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