Steven Rea - Code

Basic Functionality

For the basic functionality I created a prototype dashboard, which you can see here.

Moderate Functionality

I did not add a line to the Tableau dashboard but did to my homework since I found some code for it, and it looked much nicer.

Advanced Functionality

Filtering takes place when you click on a movie genre of the donut chart on the left. Both of the charts on the right will update based on the genre you selected.

Discussion

I was not as concerned about what I would be creating since the focus of this assignment was to learn about how to make charts interact with one another. Therefore I focused more on finding code examples and understanding how others had created dashboards using D3. I was happy to find an example that had the ability to filter based on a section of a donut chart and had fun dissecting the code. It still amazes me that such complexity is already available to us even though we have only been studying D3 for a little over a month.
To format the data to make it as easy to use as possible led me to what may look like some bloated R code below which was incredibly simple to generate in Sublime, and would have been even faster in Excel, had I thought of using that instead.

Data Processing in R

I spent time in R to make things as simple as possible for importing into html/js. I was able to distill the data down into small pieces and embedded the datasets directly into the html. See below for exact transformations of raw data to easily used data.

# dataset 1
paste('{category:','"Action"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Action==1,])/51480,2),'},') paste('{category:','"Animation"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Animation==1,])/51480,2),'},') paste('{category:','"Comedy"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Comedy==1,])/51480,2),'},') paste('{category:','"Drama"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Drama==1,])/51480,2),'},') paste('{category:','"Documentary"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Documentary==1,])/51480,2),'},') paste('{category:','"Romance"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Romance==1,])/51480,2),'},') paste('{category:','"Short"',',','measure:',round(nrow(movies[movies$year>=1900 & movies$year<2000 & movies$Short==1,])/51480,2),'},')

# dataset 2
paste('{group:','"All"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000,]),'},')
paste('{group:','"All"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000,]),'},')
paste('{group:','"All"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000,]),'},')
paste('{group:','"All"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000,]),'},')
paste('{group:','"All"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000,]),'},')
paste('{group:','"Action"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Action==1,]),'},')
paste('{group:','"Animation"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Animation==1,]),'},')
paste('{group:','"Comedy"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Comedy==1,]),'},')
paste('{group:','"Drama"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Drama==1,]),'},')
paste('{group:','"Documentary"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Documentary==1,]),'},')
paste('{group:','"Romance"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Romance==1,]),'},')
paste('{group:','"Short"',', category:','"1-2"',', measure:',nrow(movies[round(movies$rating,0)>=0 & round(movies$rating,0)<=2 & movies$year>=1900 & movies$year<2000 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','"3-4"',', measure:',nrow(movies[round(movies$rating,0)>=3 & round(movies$rating,0)<=4 & movies$year>=1900 & movies$year<2000 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','"5-6"',', measure:',nrow(movies[round(movies$rating,0)>=5 & round(movies$rating,0)<=6 & movies$year>=1900 & movies$year<2000 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','"7-8"',', measure:',nrow(movies[round(movies$rating,0)>=7 & round(movies$rating,0)<=8 & movies$year>=1900 & movies$year<2000 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','"9-10"',', measure:',nrow(movies[round(movies$rating,0)>=9 & round(movies$rating,0)<=10 & movies$year>=1900 & movies$year<2000 & movies$Short==1,]),'},')

# dataset 3
paste('{group:','"All"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900,]),'},')
paste('{group:','"All"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920,]),'},')
paste('{group:','"All"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940,]),'},')
paste('{group:','"All"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960,]),'},')
paste('{group:','"All"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980,]),'},')
paste('{group:','"Action"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Action==1,]),'},')
paste('{group:','"Action"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Action==1,]),'},')
paste('{group:','"Animation"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Animation==1,]),'},')
paste('{group:','"Animation"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Animation==1,]),'},')
paste('{group:','"Comedy"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Comedy==1,]),'},')
paste('{group:','"Comedy"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Comedy==1,]),'},')
paste('{group:','"Drama"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Drama==1,]),'},')
paste('{group:','"Drama"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Drama==1,]),'},')
paste('{group:','"Documentary"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Documentary==1,]),'},')
paste('{group:','"Documentary"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Documentary==1,]),'},')
paste('{group:','"Romance"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Romance==1,]),'},')
paste('{group:','"Romance"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Romance==1,]),'},')
paste('{group:','"Short"',', category:','1900',', measure:',nrow(movies[movies$year<1920 & movies$year>=1900 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','1920',', measure:',nrow(movies[movies$year<1940 & movies$year>=1920 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','1940',', measure:',nrow(movies[movies$year<1960 & movies$year>=1940 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','1960',', measure:',nrow(movies[movies$year<1980 & movies$year>=1960 & movies$Short==1,]),'},')
paste('{group:','"Short"',', category:','1980',', measure:',nrow(movies[movies$year<2000 & movies$year>=1980 & movies$Short==1,]),'},')



Steven Rea - MSAN 622