data=data_full.slice(500,2000)// shows records 500 through 2000
data=d3.shuffle(data_full)// shuffles specified records (data_full)
data=data_full.filter(d=>d["Plant state abbreviation"]=>"CO"&&d["Plant primary fuel category"]=>"OIL")// filters by observations in Colorado that have plant primary fuel category
// When you filter the data, you also filter the visual.
data.length
mile="5280"// a variable as a string, similar to how a csv file brings in data.
Number(mile)// change to a number
+mile// change to a number
mile2="5,280"// another string, this time with a comma in it.
mile2.replace(/,/g,'')// finds all (the g) instances of the text , between the //, and replaces it with nothing ''
toNum=(text)=>Number(text.replace(/,/g,''))
toNum(mile2)
data.forEach(d=>{
d["Plant annual net generation (MWh)"]=toNum(d["Plant annual net generation (MWh)"]);//data cleaning
d["Plant annual CO2 equivalent emissions (tons)"]=toNum(d["Plant annual CO2 equivalent emissions (tons)"]);
d["Plant annual CO2 emissions (lbs)"]
})
data[1]
data[1]["Plant annual net generation (MWh)"]// 1st arg is index; 2nd arg is column name
data[1]["Plant annual CO2 equivalent emissions (tons)"]
data.forEach(d=>{
d["Plant CO2 factor"]=toNum(d["Plant annual CO2 emissions (tons)"])*1;
data.filter(d=>d["Plant primary fuel generation category"]=="GAS"&&d["Plant annual net generation (MWh)"]>300000)
filteredData=data.filter(d=>d["Plant primary fuel generation category"]=="GAS"&&d["Plant annual net generation (MWh)"]>300000)
minNetGen=d3.min(data,d=>d["Plant annual net generation (MWh)"])
maxNetGen=d3.max(data,d=>d["Plant annual net generation (MWh)"])
extentsNetGen=d3.extent(data,d=>d["Plant annual net generation (MWh)"])// both min and max
sumNetGen=d3.sum(data,d=>d["Plant annual net generation (MWh)"])// in true Tableau fashion!
meanNetGen=d3.mean(data,d=>d["Plant annual net generation (MWh)"])
medianNetGen=d3.median(data,d=>d["Plant annual net generation (MWh)"])
plantsByState=d3.group(data,d=>d["Plant state abbreviation"])
netGenByState=d3.rollup(data,v=>d3.sum(v,d=>d["Plant annual net generation (MWh)"]),d=>d["Plant state abbreviation"]);
netGenByState.get("VA")
netGenByStateAndFuel=d3.rollup(data,v=>d3.sum(v,d=>d["Plant annual net generation (MWh)"]),d=>d["Plant state abbreviation"],d=>d["Plant primary fuel generation category"]);
netGenByStateAndFuel.get("VA")
netGenByStateAndFuel.get("VA").get("GAS")
stateAvgLongs=d3.rollup(data,v=>d3.mean(v,d=>d["Plant longitude"]),d=>d["Plant state abbreviation"]);
stateAvgLongs.get("VA")
//sortedData = d3.sort(data, d => d["Plant annual net generation (MWh)"])
//sortedData = d3.sort(data,(a,b) => d3.ascending(a["Plant annual net generation (MWh)"],b["Plant annual net generation (MWh)"]))
viewofsortedtable=Inputs.table(sortedData)
data.slice(0,1000)
data.slice(1000,5000)
//shuffledData = d3.shuffle(data)
viewofshuffledtable=Inputs.table(shuffledData)
//sample = d3.shuffle(data).slice(0,1000)
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.