Public
Edited
Mar 24, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
groupedGenreData = d3.rollup(
subData,
// group by genre and year
v => d3.group(
v.sort((a, b) => a.year - b.year),
d => d.year,
d => d.review,),
d => d.genre
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
genreFreshness = []
Insert cell
Insert cell
Insert cell
groupedMovieData.forEach((yearData, year) => {
const freshCount = yearData.get("Fresh") ? yearData.get("Fresh").length : 0;
const rottenCount = yearData.get("Rotten") ? yearData.get("Rotten").length : 0;
const totalCount = freshCount + rottenCount;
const percentage = totalCount > 0 ? (freshCount / totalCount)*100 : 0;
const movieCount = unique_titles.get(year)?.size || 0;

allMovieFreshness.push({ year, percentage, freshCount: freshCount, rottenCount: rottenCount, movieCount });
})
Insert cell
genreFreshness
Insert cell
allMovieFreshness
Insert cell
margin = ({top: 40, right: 50, bottom: 65, left: 50})
Insert cell
svgWidth = 500
Insert cell
svgHeight = 250
Insert cell
years=Array.from(new Set(Array.from(groupedGenreData.values())
.flatMap(genreData => Array.from(genreData.keys())))).sort();
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
d3=require('https://d3js.org/d3.v7.min.js', "d3-regression@1")
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