Skip to content

Instantly share code, notes, and snippets.

@laurieskelly
Last active February 24, 2016 07:17
Show Gist options
  • Select an option

  • Save laurieskelly/9379773 to your computer and use it in GitHub Desktop.

Select an option

Save laurieskelly/9379773 to your computer and use it in GitHub Desktop.
Oscar Dresses

Are there any "lucky" designers on the red carpet?

Hover a dot to see the actress and designer. Gold-bordered dots are Actress or Supporting Actress winners.
Click a dot to highlight the designer and other red carpet appearances by that designer.
Click a designer to see all dresses. Click lots of designers to check out my "luxe rainbow" ordinal color scale.
Fork and set nominees_only to False to see all red carpet appearances (nominees, winners, presenters, & performers). [Bugs possible here.]

[{"name": "Charlize Theron", "des": "gucci", "role": "Nominee Actress", "year": "2004", "dress": "Gucci", "class": "nom lead win"}, {"name": "Keisha Castle-Hughes", "des": "lizmitchell", "role": "Nominee Actress", "year": "2004", "dress": "Liz Mitchell", "class": "nom lead"}, {"name": "Diane Keaton", "des": "ralphlauren", "role": "Nominee Actress", "year": "2004", "dress": "Ralph Lauren", "class": "nom lead"}, {"name": "Samantha Morton", "des": "givenchy", "role": "Nominee Actress", "year": "2004", "dress": "Givenchy", "class": "nom lead"}, {"name": "Naomi Watts", "des": "versace", "role": "Nominee Actress", "year": "2004", "dress": "Versace", "class": "nom lead"}, {"name": "Renee Zellweger", "des": "carolinaherr", "role": "Nominee Supporting", "year": "2004", "dress": "Carolina Herrera", "class": "nom supp win"}, {"name": "Shohreh Aghdashloo", "des": "simin", "role": "Nominee Supporting", "year": "2004", "dress": "Simin", "class": "nom supp"}, {"name": "Patricia Clarkson", "des": "billblass", "role": "Nominee Supporting", "year": "2004", "dress": "Bill Blass", "class": "nom supp"}, {"name": "Marcia Gay Harden", "des": "badgleymisch", "role": "Nominee Supporting", "year": "2004", "dress": "Badgley Mischka", "class": "nom supp"}, {"name": "Holly Hunter", "des": "verawang", "role": "Nominee Supporting", "year": "2004", "dress": "Vera Wang", "class": "nom supp"}, {"name": "Catherine Zeta-Jones", "des": "versace", "role": "Presenter", "year": "2004", "dress": "Versace", "class": "presenter"}, {"name": "Angelina Jolie", "des": "marcbouwer", "role": "Presenter", "year": "2004", "dress": "Marc Bouwer", "class": "presenter"}, {"name": "Renee Zellweger", "des": "carolinaherr", "role": "Presenter", "year": "2004", "dress": "Carolina Herrera", "class": "presenter"}, {"name": "Liv Tyler", "des": "givenchy", "role": "Presenter", "year": "2004", "dress": "Givenchy", "class": "presenter"}, {"name": "Jada Pinkett Smith", "des": "valentino", "role": "Presenter", "year": "2004", "dress": "Valentino", "class": "presenter"}, {"name": "Jennifer Garner", "des": "valentino", "role": "Presenter", "year": "2004", "dress": "Valentino", "class": "presenter"}, {"name": "Scarlett Johansson", "des": "albertaferre", "role": "Presenter", "year": "2004", "dress": "Alberta Ferretti", "class": "presenter"}, {"name": "Sandra Bullock", "des": "oscardelaren", "role": "Presenter", "year": "2004", "dress": "Oscar de la Renta", "class": "presenter"}, {"name": "Julia Roberts", "des": "armani", "role": "Presenter", "year": "2004", "dress": "Armani", "class": "presenter"}, {"name": "Oprah Winfrey", "des": "gianfrancofe", "role": "Presenter", "year": "2004", "dress": "Gianfranco Ferre", "class": "presenter"}, {"name": "Jamie Lee Curtis", "des": "moniquelhuil", "role": "Presenter", "year": "2004", "dress": "Monique Lhuillier", "class": "presenter"}, {"name": "Charlize Theron", "des": "gucci", "role": "Presenter", "year": "2004", "dress": "Gucci", "class": "presenter"}, {"name": "Nicole Kidman", "des": "chanel", "role": "Presenter", "year": "2004", "dress": "Chanel", "class": "presenter"}, {"name": "Alison Krauss", "des": "sunnychoi", "role": "Performer", "year": "2004", "dress": "Sunny Choi", "class": "performer"}, {"name": "Annie Lennox", "des": "stellamccart", "role": "Performer", "year": "2004", "dress": "Stella McCartney", "class": "performer"}, {"name": "Hilary Swank", "des": "guylaroche", "role": "Nominee Actress", "year": "2005", "dress": "Guy Laroche", "class": "nom lead win"}, {"name": "Annette Bening", "des": "naeemkhan", "role": "Nominee Actress", "year": "2005", "dress": "Naeem Khan", "class": "nom lead"}, {"name": "Catalina Sandino Moreno", "des": "robertocaval", "role": "Nominee Actress", "year": "2005", "dress": "Roberto Cavalli", "class": "nom lead"}, {"name": "Imelda Staunton", "des": "veradrake", "role": "Nominee Actress", "year": "2005", "dress": "Vera Drake", "class": "nom lead"}, {"name": "Kate Winslet", "des": "badgleymisch", "role": "Nominee Actress", "year": "2005", "dress": "Badgley Mischka", "class": "nom lead"}, {"name": "Cate Blanchett", "des": "valentino", "role": "Nominee Supporting", "year": "2005", "dress": "Valentino", "class": "nom supp win"}, {"name": "Laura Linney", "des": "j.mendel", "role": "Nominee Supporting", "year": "2005", "dress": "J. Mendel", "class": "nom supp"}, {"name": "Virginia Madsen", "des": "versace", "role": "Nominee Supporting", "year": "2005", "dress": "Versace", "class": "nom supp"}, {"name": "Sophie Okonedo", "des": "rochas", "role": "Nominee Supporting", "year": "2005", "dress": "Rochas", "class": "nom supp"}, {"name": "Natalie Portman", "des": "lanvin", "role": "Nominee Supporting", "year": "2005", "dress": "Lanvin", "class": "nom supp"}, {"name": "Drew Barrymore", "des": "versace", "role": "Presenter", "year": "2005", "dress": "Versace", "class": "presenter"}, {"name": "Annette Bening", "des": "naeemkhan", "role": "Presenter", "year": "2005", "dress": "Naeem Khan", "class": "presenter"}, {"name": "Halle Berry", "des": "versace", "role": "Presenter", "year": "2005", "dress": "Versace", "class": "presenter"}, {"name": "Cate Blanchett", "des": "valentino", "role": "Presenter", "year": "2005", "dress": "Valentino", "class": "presenter"}, {"name": "Penelope Cruz", "des": "oscardelaren", "role": "Presenter", "year": "2005", "dress": "Oscar de la Renta", "class": "presenter"}, {"name": "Kirsten Dunst", "des": "chanel", "role": "Presenter", "year": "2005", "dress": "Chanel", "class": "presenter"}, {"name": "Salma Hayek", "des": "prada", "role": "Presenter", "year": "2005", "dress": "Prada", "class": "presenter"}, {"name": "Scarlett Johansson", "des": "rolandmouret", "role": "Presenter", "year": "2005", "dress": "Roland Mouret", "class": "presenter"}, {"name": "Beyonce Knowles", "des": "versace", "role": "Performer", "year": "2005", "dress": "Versace", "class": "performer"}, {"name": "Laura Linney", "des": "j.mendel", "role": "Presenter", "year": "2005", "dress": "J. Mendel", "class": "presenter"}, {"name": "Gwyneth Paltrow", "des": "stellamccart", "role": "Presenter", "year": "2005", "dress": "Stella McCartney", "class": "presenter"}, {"name": "Natalie Portman", "des": "lanvin", "role": "Presenter", "year": "2005", "dress": "Lanvin", "class": "presenter"}, {"name": "Julia Roberts", "des": "dolcegabbana", "role": "Performer", "year": "2005", "dress": "Dolce & Gabbana", "class": "performer"}, {"name": "Emmy Rossum", "des": "ralphlauren", "role": "Presenter", "year": "2005", "dress": "Ralph Lauren", "class": "presenter"}, {"name": "Charlize Theron", "des": "christiandio", "role": "Presenter", "year": "2005", "dress": "Christian Dior", "class": "presenter"}, {"name": "Kate Winslet", "des": "badgleymisch", "role": "Presenter", "year": "2005", "dress": "Badgley Mischka", "class": "presenter"}, {"name": "Renee Zellweger", "des": "carolinaherr", "role": "Performer", "year": "2005", "dress": "Carolina Herrera", "class": "performer"}, {"name": "Ziyi Zhang", "des": "moniquelhuil", "role": "Presenter", "year": "2005", "dress": "Monique Lhuillier", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "christiandio", "role": "Nominee Actress", "year": "2006", "dress": "Christian Dior", "class": "nom lead win"}, {"name": "Judi Dench", "des": "abujhanisand", "role": "Nominee Actress", "year": "2006", "dress": "Abu Jhani & Sandeep Khosla", "class": "nom lead"}, {"name": "Felicity Huffman", "des": "zacposen", "role": "Nominee Actress", "year": "2006", "dress": "Zac Posen", "class": "nom lead"}, {"name": "Keira Knightley", "des": "verawang", "role": "Nominee Actress", "year": "2006", "dress": "Vera Wang", "class": "nom lead"}, {"name": "Charlize Theron", "des": "christiandio", "role": "Nominee Actress", "year": "2006", "dress": "Christian Dior", "class": "nom lead"}, {"name": "Rachel Weisz", "des": "narcisorodri", "role": "Nominee Supporting", "year": "2006", "dress": "Narciso Rodriguez", "class": "nom supp win"}, {"name": "Amy Adams", "des": "carolinaherr", "role": "Nominee Supporting", "year": "2006", "dress": "Carolina Herrera", "class": "nom supp"}, {"name": "Catherine Keener", "des": "moniquelhuil", "role": "Nominee Supporting", "year": "2006", "dress": "Monique Lhuillier", "class": "nom supp"}, {"name": "Frances McDormand", "des": "unknown", "role": "Nominee Supporting", "year": "2006", "dress": "unknown", "class": "nom supp"}, {"name": "Michelle Williams", "des": "verawang", "role": "Nominee Supporting", "year": "2006", "dress": "Vera Wang", "class": "nom supp"}, {"name": "Jessica Alba", "des": "versace", "role": "Presenter", "year": "2006", "dress": "Versace", "class": "presenter"}, {"name": "Jennifer Aniston", "des": "rochas", "role": "Presenter", "year": "2006", "dress": "Rochas", "class": "presenter"}, {"name": "Sandra Bullock", "des": "angelsanchez", "role": "Presenter", "year": "2006", "dress": "Angel Sanchez", "class": "presenter"}, {"name": "Jennifer Garner", "des": "michaelkors", "role": "Presenter", "year": "2006", "dress": "Michael Kors", "class": "presenter"}, {"name": "Salma Hayek", "des": "prada", "role": "Presenter", "year": "2006", "dress": "Prada", "class": "presenter"}, {"name": "Nicole Kidman", "des": "balenciaga", "role": "Presenter", "year": "2006", "dress": "Balenciaga", "class": "presenter"}, {"name": "Queen Latifah", "des": "carmenmarcva", "role": "Presenter", "year": "2006", "dress": "Carmen Marc Valvo", "class": "presenter"}, {"name": "Jennifer Lopez", "des": "jeandesss", "role": "Presenter", "year": "2006", "dress": "Jean Desss", "class": "presenter"}, {"name": "Rachel McAdams", "des": "miumiu", "role": "Host", "year": "2006", "dress": "Miu Miu", "class": "host"}, {"name": "Dolly Parton", "des": "robertbehar", "role": "Performer", "year": "2006", "dress": "Robert Behar", "class": "performer"}, {"name": "Meryl Streep", "des": "rogeliovelas", "role": "Presenter", "year": "2006", "dress": "Rogelio Velasco", "class": "presenter"}, {"name": "Hilary Swank", "des": "versace", "role": "Presenter", "year": "2006", "dress": "Versace", "class": "presenter"}, {"name": "Charlize Theron", "des": "christiandio", "role": "Presenter", "year": "2006", "dress": "Christian Dior", "class": "presenter"}, {"name": "Uma Thurman", "des": "versace", "role": "Presenter", "year": "2006", "dress": "Versace", "class": "presenter"}, {"name": "Naomi Watts", "des": "givenchy", "role": "Presenter", "year": "2006", "dress": "Givenchy", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "christiandio", "role": "Presenter", "year": "2006", "dress": "Christian Dior", "class": "presenter"}, {"name": "Ziyi Zhang", "des": "armani", "role": "Presenter", "year": "2006", "dress": "Armani", "class": "presenter"}, {"name": "Helen Mirren", "des": "christianlac", "role": "Nominee Actress", "year": "2007", "dress": "Christian Lacroix", "class": "nom lead win"}, {"name": "Penelope Cruz", "des": "versace", "role": "Nominee Actress", "year": "2007", "dress": "Versace", "class": "nom lead"}, {"name": "Judi Dench", "des": "didnotattend", "role": "Nominee Actress", "year": "2007", "dress": "did not attend", "class": "nom lead"}, {"name": "Meryl Streep", "des": "prada", "role": "Nominee Actress", "year": "2007", "dress": "Prada", "class": "nom lead"}, {"name": "Kate Winslet", "des": "valentino", "role": "Nominee Actress", "year": "2007", "dress": "Valentino", "class": "nom lead"}, {"name": "Jennifer Hudson", "des": "oscardelaren", "role": "Nominee Supporting", "year": "2007", "dress": "Oscar de la Renta", "class": "nom supp win"}, {"name": "Adriana Barraza", "des": "unknown", "role": "Nominee Supporting", "year": "2007", "dress": "unknown", "class": "nom supp"}, {"name": "Cate Blanchett", "des": "armani", "role": "Nominee Supporting", "year": "2007", "dress": "Armani", "class": "nom supp"}, {"name": "Abigail Breslin", "des": "simin", "role": "Nominee Supporting", "year": "2007", "dress": "Simin", "class": "nom supp"}, {"name": "Rinko Kikuchi", "des": "chanel", "role": "Nominee Supporting", "year": "2007", "dress": "Chanel", "class": "nom supp"}, {"name": "Maggie Gyllenhaal", "des": "proenzaschou", "role": "Presenter", "year": "2007", "dress": "Proenza Schouler", "class": "presenter"}, {"name": "Abigail Breslin", "des": "simin", "role": "Presenter", "year": "2007", "dress": "Simin", "class": "presenter"}, {"name": "Jessica Biel", "des": "oscardelaren", "role": "Presenter", "year": "2007", "dress": "Oscar de la Renta", "class": "presenter"}, {"name": "Rachel Weisz", "des": "verawang", "role": "Presenter", "year": "2007", "dress": "Vera Wang", "class": "presenter"}, {"name": "Cameron Diaz", "des": "valentino", "role": "Presenter", "year": "2007", "dress": "Valentino", "class": "presenter"}, {"name": "Emily Blunt", "des": "calvinklein", "role": "Presenter", "year": "2007", "dress": "Calvin Klein", "class": "presenter"}, {"name": "Gwyneth Paltrow", "des": "zacposen", "role": "Presenter", "year": "2007", "dress": "Zac Posen", "class": "presenter"}, {"name": "Catherine Deneuve", "des": "jeanpaulgaul", "role": "Presenter", "year": "2007", "dress": "Jean Paul Gaultier", "class": "presenter"}, {"name": "Cate Blanchett", "des": "armani", "role": "Presenter", "year": "2007", "dress": "Armani", "class": "presenter"}, {"name": "Penelope Cruz", "des": "versace", "role": "Presenter", "year": "2007", "dress": "Versace", "class": "presenter"}, {"name": "Kirsten Dunst", "des": "chanel", "role": "Presenter", "year": "2007", "dress": "Chanel", "class": "presenter"}, {"name": "Jennifer Lopez", "des": "marchesa", "role": "Presenter", "year": "2007", "dress": "Marchesa", "class": "presenter"}, {"name": "Queen Latifah", "des": "carmenmarcva", "role": "Presenter", "year": "2007", "dress": "Carmen Marc Valvo", "class": "presenter"}, {"name": "Kate Winslet", "des": "valentino", "role": "Presenter", "year": "2007", "dress": "Valentino", "class": "presenter"}, {"name": "Jodie Foster", "des": "verawang", "role": "Presenter", "year": "2007", "dress": "Vera Wang", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "ninaricci", "role": "Presenter", "year": "2007", "dress": "Nina Ricci", "class": "presenter"}, {"name": "Melissa Etheridge", "des": "domenicovacc", "role": "Performer", "year": "2007", "dress": "Domenico Vacca", "class": "performer"}, {"name": "Celine Dion", "des": "johngalliano", "role": "Performer", "year": "2007", "dress": "John Galliano", "class": "performer"}, {"name": "Jennifer Hudson", "des": "oscardelaren", "role": "Performer", "year": "2007", "dress": "Oscar de la Renta", "class": "performer"}, {"name": "Jennifer Hudson", "des": "oscardelaren", "role": "Performer", "year": "2007", "dress": "Oscar de la Renta", "class": "performer"}, {"name": "Jennifer Hudson", "des": "oscardelaren", "role": "Performer", "year": "2007", "dress": "Oscar de la Renta", "class": "performer"}, {"name": "Marion Cotillard", "des": "jeanpaulgaul", "role": "Nominee Actress", "year": "2008", "dress": "Jean Paul Gaultier", "class": "nom lead win"}, {"name": "Cate Blanchett", "des": "driesvannote", "role": "Nominee Actress", "year": "2008", "dress": "Dries Van Noten", "class": "nom lead"}, {"name": "Julie Christie", "des": "tanyagill", "role": "Nominee Actress", "year": "2008", "dress": "Tanya Gill", "class": "nom lead"}, {"name": "Laura Linney", "des": "michaelkors", "role": "Nominee Actress", "year": "2008", "dress": "Michael Kors", "class": "nom lead"}, {"name": "Ellen Page", "des": "jeanlouissch", "role": "Nominee Actress", "year": "2008", "dress": "Jean Louis Scherrer", "class": "nom lead"}, {"name": "Tilda Swinton", "des": "lanvin", "role": "Nominee Supporting", "year": "2008", "dress": "Lanvin", "class": "nom supp win"}, {"name": "Cate Blanchett", "des": "driesvannote", "role": "Nominee Supporting", "year": "2008", "dress": "Dries Van Noten", "class": "nom supp"}, {"name": "Ruby Dee", "des": "kevanhall", "role": "Nominee Supporting", "year": "2008", "dress": "Kevan Hall", "class": "nom supp"}, {"name": "Saoirse Ronan", "des": "albertaferre", "role": "Nominee Supporting", "year": "2008", "dress": "Alberta Ferretti", "class": "nom supp"}, {"name": "Amy Ryan", "des": "escada", "role": "Nominee Supporting", "year": "2008", "dress": "Escada", "class": "nom supp"}, {"name": "Jennifer Garner", "des": "oscardelaren", "role": "Presenter", "year": "2008", "dress": "Oscar de la Renta", "class": "presenter"}, {"name": "Katherine Heigl", "des": "escada", "role": "Presenter", "year": "2008", "dress": "Escada", "class": "presenter"}, {"name": "Cate Blanchett", "des": "driesvannote", "role": "Presenter", "year": "2008", "dress": "Dries Van Noten", "class": "presenter"}, {"name": "Jennifer Hudson", "des": "robertocaval", "role": "Presenter", "year": "2008", "dress": "Roberto Cavalli", "class": "presenter"}, {"name": "Keri Russell", "des": "ninaricci", "role": "Presenter", "year": "2008", "dress": "Nina Ricci", "class": "presenter"}, {"name": "Jessica Alba", "des": "marchesa", "role": "Presenter", "year": "2008", "dress": "Marchesa", "class": "presenter"}, {"name": "Miley Cyrus", "des": "valentino", "role": "Presenter", "year": "2008", "dress": "Valentino", "class": "presenter"}, {"name": "Renee Zellweger", "des": "carolinaherr", "role": "Presenter", "year": "2008", "dress": "Carolina Herrera", "class": "presenter"}, {"name": "Nicole Kidman", "des": "balenciaga", "role": "Presenter", "year": "2008", "dress": "Balenciaga", "class": "presenter"}, {"name": "Penelope Cruz", "des": "chanel", "role": "Presenter", "year": "2008", "dress": "Chanel", "class": "presenter"}, {"name": "Cameron Diaz", "des": "christiandio", "role": "Presenter", "year": "2008", "dress": "Christian Dior", "class": "presenter"}, {"name": "Hilary Swank", "des": "versace", "role": "Presenter", "year": "2008", "dress": "Versace", "class": "presenter"}, {"name": "Amy Adams", "des": "proenzaschou", "role": "Presenter", "year": "2008", "dress": "Proenza Schouler", "class": "presenter"}, {"name": "Helen Mirren", "des": "georgeschakr", "role": "Presenter", "year": "2008", "dress": "Georges Chakra", "class": "presenter"}, {"name": "Amy Adams", "des": "proenzaschou", "role": "Performer", "year": "2008", "dress": "Proenza Schouler", "class": "performer"}, {"name": "Jamia Simone Nash", "des": "ellazahlan", "role": "Performer", "year": "2008", "dress": "Ella Zahlan", "class": "performer"}, {"name": "Kristin Chenoweth", "des": "armani", "role": "Performer", "year": "2008", "dress": "Armani", "class": "performer"}, {"name": "Kate Winslet", "des": "yvessaintlau", "role": "Nominee Actress", "year": "2009", "dress": "Yves Saint Laurent", "class": "nom lead win"}, {"name": "Anne Hathaway", "des": "armani", "role": "Nominee Actress", "year": "2009", "dress": "Armani", "class": "nom lead"}, {"name": "Angelina Jolie", "des": "eliesaab", "role": "Nominee Actress", "year": "2009", "dress": "Elie Saab", "class": "nom lead"}, {"name": "Melissa Leo", "des": "badgleymisch", "role": "Nominee Actress", "year": "2009", "dress": "Badgley Mischka", "class": "nom lead"}, {"name": "Meryl Streep", "des": "albertaferre", "role": "Nominee Actress", "year": "2009", "dress": "Alberta Ferretti", "class": "nom lead"}, {"name": "Penelope Cruz", "des": "balmain", "role": "Nominee Supporting", "year": "2009", "dress": "Balmain", "class": "nom supp win"}, {"name": "Amy Adams", "des": "carolinaherr", "role": "Nominee Supporting", "year": "2009", "dress": "Carolina Herrera", "class": "nom supp"}, {"name": "Viola Davis", "des": "reemacra", "role": "Nominee Supporting", "year": "2009", "dress": "Reem Acra", "class": "nom supp"}, {"name": "Taraji P. Henson", "des": "robertocaval", "role": "Nominee Supporting", "year": "2009", "dress": "Roberto Cavalli", "class": "nom supp"}, {"name": "Marisa Tomei", "des": "versace", "role": "Nominee Supporting", "year": "2009", "dress": "Versace", "class": "nom supp"}, {"name": "Whoopi Goldberg", "des": "christiandio", "role": "Presenter", "year": "2009", "dress": "Christian Dior", "class": "presenter"}, {"name": "Tina Fey", "des": "zacposen", "role": "Presenter", "year": "2009", "dress": "Zac Posen", "class": "presenter"}, {"name": "Jennifer Aniston", "des": "valentino", "role": "Presenter", "year": "2009", "dress": "Valentino", "class": "presenter"}, {"name": "Natalie Portman", "des": "rodarte", "role": "Presenter", "year": "2009", "dress": "Rodarte", "class": "presenter"}, {"name": "Jessica Biel", "des": "prada", "role": "Presenter", "year": "2009", "dress": "Prada", "class": "presenter"}, {"name": "Freida Pinto", "des": "johngalliano", "role": "Presenter", "year": "2009", "dress": "John Galliano", "class": "presenter"}, {"name": "Queen Latifah", "des": "georgeschakr", "role": "Presenter", "year": "2009", "dress": "Georges Chakra", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "rodarte", "role": "Presenter", "year": "2009", "dress": "Rodarte", "class": "presenter"}, {"name": "Halle Berry", "des": "marchesa", "role": "Presenter", "year": "2009", "dress": "Marchesa", "class": "presenter"}, {"name": "Queen Latifah", "des": "georgeschakr", "role": "Performer", "year": "2009", "dress": "Georges Chakra", "class": "performer"}, {"name": "Sandra Bullock", "des": "marchesa", "role": "Nominee Actress", "year": "2010", "dress": "Marchesa", "class": "nom lead win"}, {"name": "Helen Mirren", "des": "badgleymisch", "role": "Nominee Actress", "year": "2010", "dress": "Badgley Mischka", "class": "nom lead"}, {"name": "Carey Mulligan", "des": "prada", "role": "Nominee Actress", "year": "2010", "dress": "Prada", "class": "nom lead"}, {"name": "Gabourey Sidibe", "des": "marchesa", "role": "Nominee Actress", "year": "2010", "dress": "Marchesa", "class": "nom lead"}, {"name": "Meryl Streep", "des": "chrismarch", "role": "Nominee Actress", "year": "2010", "dress": "Chris March", "class": "nom lead"}, {"name": "Mo'Nique", "des": "tadashishoji", "role": "Nominee Supporting", "year": "2010", "dress": "Tadashi Shoji", "class": "nom supp win"}, {"name": "Penelope Cruz", "des": "donnakaran", "role": "Nominee Supporting", "year": "2010", "dress": "Donna Karan", "class": "nom supp"}, {"name": "Vera Farmiga", "des": "marchesa", "role": "Nominee Supporting", "year": "2010", "dress": "Marchesa", "class": "nom supp"}, {"name": "Maggie Gyllenhaal", "des": "driesvannote", "role": "Nominee Supporting", "year": "2010", "dress": "Dries Van Noten", "class": "nom supp"}, {"name": "Anna Kendrick", "des": "eliesaab", "role": "Nominee Supporting", "year": "2010", "dress": "Elie Saab", "class": "nom supp"}, {"name": "Penelope Cruz", "des": "donnakaran", "role": "Presenter", "year": "2010", "dress": "Donna Karan", "class": "presenter"}, {"name": "Miley Cyrus", "des": "jennypackham", "role": "Presenter", "year": "2010", "dress": "Jenny Packham", "class": "presenter"}, {"name": "Carey Mulligan", "des": "prada", "role": "Presenter", "year": "2010", "dress": "Prada", "class": "presenter"}, {"name": "Queen Latifah", "des": "badgleymisch", "role": "Presenter", "year": "2010", "dress": "Badgley Mischka", "class": "presenter"}, {"name": "Sigourney Weaver", "des": "lanvin", "role": "Presenter", "year": "2010", "dress": "Lanvin", "class": "presenter"}, {"name": "Charlize Theron", "des": "christiandio", "role": "Presenter", "year": "2010", "dress": "Christian Dior", "class": "presenter"}, {"name": "Elizabeth Banks", "des": "versace", "role": "Presenter", "year": "2010", "dress": "Versace", "class": "presenter"}, {"name": "Sandra Bullock", "des": "marchesa", "role": "Presenter", "year": "2010", "dress": "Marchesa", "class": "presenter"}, {"name": "Demi Moore", "des": "versace", "role": "Presenter", "year": "2010", "dress": "Versace", "class": "presenter"}, {"name": "Jennifer Lopez", "des": "armani", "role": "Presenter", "year": "2010", "dress": "Armani", "class": "presenter"}, {"name": "Kathy Bates", "des": "givenchy", "role": "Presenter", "year": "2010", "dress": "Givenchy", "class": "presenter"}, {"name": "Vera Farmiga", "des": "marchesa", "role": "Presenter", "year": "2010", "dress": "Marchesa", "class": "presenter"}, {"name": "Barbra Streisand", "des": "randolphduke", "role": "Presenter", "year": "2010", "dress": "Randolph Duke", "class": "presenter"}, {"name": "Natalie Portman", "des": "rodarte", "role": "Nominee Actress", "year": "2011", "dress": "Rodarte", "class": "nom lead win"}, {"name": "Annette Bening", "des": "naeemkhan", "role": "Nominee Actress", "year": "2011", "dress": "Naeem Khan", "class": "nom lead"}, {"name": "Nicole Kidman", "des": "christiandio", "role": "Nominee Actress", "year": "2011", "dress": "Christian Dior", "class": "nom lead"}, {"name": "Jennifer Lawrence", "des": "calvinklein", "role": "Nominee Actress", "year": "2011", "dress": "Calvin Klein", "class": "nom lead"}, {"name": "Michelle Williams", "des": "chanel", "role": "Nominee Actress", "year": "2011", "dress": "Chanel", "class": "nom lead"}, {"name": "Melissa Leo", "des": "marcbouwer", "role": "Nominee Supporting", "year": "2011", "dress": "Marc Bouwer", "class": "nom supp win"}, {"name": "Amy Adams", "des": "lwrenscott", "role": "Nominee Supporting", "year": "2011", "dress": "L'Wren Scott", "class": "nom supp"}, {"name": "Helena Bonham Carter", "des": "colleenatwoo", "role": "Nominee Supporting", "year": "2011", "dress": "Colleen Atwood", "class": "nom supp"}, {"name": "Hailee Steinfeld", "des": "marchesa", "role": "Nominee Supporting", "year": "2011", "dress": "Marchesa", "class": "nom supp"}, {"name": "Jacki Weaver", "des": "collettedinn", "role": "Nominee Supporting", "year": "2011", "dress": "Collette Dinnigan", "class": "nom supp"}, {"name": "Mila Kunis", "des": "eliesaab", "role": "Presenter", "year": "2011", "dress": "Elie Saab", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "armani", "role": "Presenter", "year": "2011", "dress": "Armani", "class": "presenter"}, {"name": "Nicole Kidman", "des": "christiandio", "role": "Presenter", "year": "2011", "dress": "Christian Dior", "class": "presenter"}, {"name": "Marisa Tomei", "des": "charlesjames", "role": "Presenter", "year": "2011", "dress": "Charles James", "class": "presenter"}, {"name": "Cate Blanchett", "des": "givenchy", "role": "Presenter", "year": "2011", "dress": "Givenchy", "class": "presenter"}, {"name": "Oprah Winfrey", "des": "zacposen", "role": "Presenter", "year": "2011", "dress": "Zac Posen", "class": "presenter"}, {"name": "Jennifer Hudson", "des": "versace", "role": "Presenter", "year": "2011", "dress": "Versace", "class": "presenter"}, {"name": "Halle Berry", "des": "marchesa", "role": "Presenter", "year": "2011", "dress": "Marchesa", "class": "presenter"}, {"name": "Annette Bening", "des": "naeemkhan", "role": "Presenter", "year": "2011", "dress": "Naeem Khan", "class": "presenter"}, {"name": "Sandra Bullock", "des": "verawang", "role": "Presenter", "year": "2011", "dress": "Vera Wang", "class": "presenter"}, {"name": "Anne Hathaway", "des": "valentino", "role": "Performer", "year": "2011", "dress": "Valentino", "class": "performer"}, {"name": "Gwyneth Paltrow", "des": "calvinklein", "role": "Performer", "year": "2011", "dress": "Calvin Klein", "class": "performer"}, {"name": "Celine Dion", "des": "armani", "role": "Performer", "year": "2011", "dress": "Armani", "class": "performer"}, {"name": "Meryl Streep", "des": "lanvin", "role": "Nominee Actress", "year": "2012", "dress": "Lanvin", "class": "nom lead win"}, {"name": "Glenn Close", "des": "zacposen", "role": "Nominee Actress", "year": "2012", "dress": "Zac Posen", "class": "nom lead"}, {"name": "Viola Davis", "des": "verawang", "role": "Nominee Actress", "year": "2012", "dress": "Vera Wang", "class": "nom lead"}, {"name": "Rooney Mara", "des": "givenchy", "role": "Nominee Actress", "year": "2012", "dress": "Givenchy", "class": "nom lead"}, {"name": "Michelle Williams", "des": "louisvuitton", "role": "Nominee Actress", "year": "2012", "dress": "Louis Vuitton", "class": "nom lead"}, {"name": "Octavia Spencer", "des": "tadashishoji", "role": "Nominee Supporting", "year": "2012", "dress": "Tadashi Shoji", "class": "nom supp win"}, {"name": "Berenice Bejo", "des": "eliesaab", "role": "Nominee Supporting", "year": "2012", "dress": "Elie Saab", "class": "nom supp"}, {"name": "Jessica Chastain", "des": "alexandermcq", "role": "Nominee Supporting", "year": "2012", "dress": "Alexander McQueen", "class": "nom supp"}, {"name": "Melissa McCarthy", "des": "marinarinald", "role": "Nominee Supporting", "year": "2012", "dress": "Marina Rinaldi", "class": "nom supp"}, {"name": "Janet McTeer", "des": "davidmeister", "role": "Nominee Supporting", "year": "2012", "dress": "David Meister", "class": "nom supp"}, {"name": "Cameron Diaz", "des": "gucci", "role": "Presenter", "year": "2012", "dress": "Gucci", "class": "presenter"}, {"name": "Sandra Bullock", "des": "marchesa", "role": "Presenter", "year": "2012", "dress": "Marchesa", "class": "presenter"}, {"name": "Melissa Leo", "des": "reemacra", "role": "Presenter", "year": "2012", "dress": "Reem Acra", "class": "presenter"}, {"name": "Penelope Cruz", "des": "armani", "role": "Presenter", "year": "2012", "dress": "Armani", "class": "presenter"}, {"name": "Angelina Jolie", "des": "versace", "role": "Presenter", "year": "2012", "dress": "Versace", "class": "presenter"}, {"name": "Milla Jovovich", "des": "eliesaab", "role": "Presenter", "year": "2012", "dress": "Elie Saab", "class": "presenter"}, {"name": "Rose Byrne", "des": "viviennewest", "role": "Presenter", "year": "2012", "dress": "Vivienne Westwood", "class": "presenter"}, {"name": "Meryl Streep", "des": "lanvin", "role": "Presenter", "year": "2012", "dress": "Lanvin", "class": "presenter"}, {"name": "Natalie Portman", "des": "christiandio", "role": "Presenter", "year": "2012", "dress": "Christian Dior", "class": "presenter"}, {"name": "Esperanza Spalding", "des": "prophetik", "role": "Performer", "year": "2012", "dress": "Prophetik", "class": "performer"}, {"name": "Jennifer Lawrence", "des": "christiandio", "role": "Nominee Actress", "year": "2013", "dress": "Christian Dior", "class": "nom lead win"}, {"name": "Jessica Chastain", "des": "armani", "role": "Nominee Actress", "year": "2013", "dress": "Armani", "class": "nom lead"}, {"name": "Emmanuelle Riva", "des": "lanvin", "role": "Nominee Actress", "year": "2013", "dress": "Lanvin", "class": "nom lead"}, {"name": "Quvenzhane Wallis", "des": "armani", "role": "Nominee Actress", "year": "2013", "dress": "Armani", "class": "nom lead"}, {"name": "Naomi Watts", "des": "armani", "role": "Nominee Actress", "year": "2013", "dress": "Armani", "class": "nom lead"}, {"name": "Anne Hathaway", "des": "prada", "role": "Nominee Supporting", "year": "2013", "dress": "Prada", "class": "nom supp win"}, {"name": "Amy Adams", "des": "oscardelaren", "role": "Nominee Supporting", "year": "2013", "dress": "Oscar de la Renta", "class": "nom supp"}, {"name": "Sally Field", "des": "valentino", "role": "Nominee Supporting", "year": "2013", "dress": "Valentino", "class": "nom supp"}, {"name": "Helen Hunt", "des": "hm", "role": "Nominee Supporting", "year": "2013", "dress": "H&M", "class": "nom supp"}, {"name": "Jacki Weaver", "des": "ranizakhem", "role": "Nominee Supporting", "year": "2013", "dress": "Rani Zakhem", "class": "nom supp"}, {"name": "Octavia Spencer", "des": "tadashishoji", "role": "Presenter", "year": "2013", "dress": "Tadashi Shoji", "class": "presenter"}, {"name": "Melissa McCarthy", "des": "davidmeister", "role": "Presenter", "year": "2013", "dress": "David Meister", "class": "presenter"}, {"name": "Reese Witherspoon", "des": "louisvuitton", "role": "Presenter", "year": "2013", "dress": "Louis Vuitton", "class": "presenter"}, {"name": "Jennifer Aniston", "des": "valentino", "role": "Presenter", "year": "2013", "dress": "Valentino", "class": "presenter"}, {"name": "Halle Berry", "des": "versace", "role": "Presenter", "year": "2013", "dress": "Versace", "class": "presenter"}, {"name": "Jessica Chastain", "des": "armani", "role": "Presenter", "year": "2013", "dress": "Armani", "class": "presenter"}, {"name": "Sandra Bullock", "des": "eliesaab", "role": "Presenter", "year": "2013", "dress": "Elie Saab", "class": "presenter"}, {"name": "Jennifer Lawrence", "des": "christiandio", "role": "Presenter", "year": "2013", "dress": "Christian Dior", "class": "presenter"}, {"name": "Nicole Kidman", "des": "lwrenscott", "role": "Presenter", "year": "2013", "dress": "L'Wren Scott", "class": "presenter"}, {"name": "Salma Hayek", "des": "alexandermcq", "role": "Presenter", "year": "2013", "dress": "Alexander McQueen", "class": "presenter"}, {"name": "Meryl Streep", "des": "lanvin", "role": "Presenter", "year": "2013", "dress": "Lanvin", "class": "presenter"}, {"name": "Naomi Watts", "des": "armani", "role": "Performer", "year": "2013", "dress": "Armani", "class": "performer"}, {"name": "Catherine Zeta-Jones", "des": "zuhairmurad", "role": "Performer", "year": "2013", "dress": "Zuhair Murad", "class": "performer"}, {"name": "Jennifer Hudson", "des": "robertocaval", "role": "Performer", "year": "2013", "dress": "Roberto Cavalli", "class": "performer"}, {"name": "Samantha Barks", "des": "valentino", "role": "Performer", "year": "2013", "dress": "Valentino", "class": "performer"}, {"name": "Adele", "des": "jennypackham", "role": "Performer", "year": "2013", "dress": "Jenny Packham", "class": "performer"}, {"name": "Barbra Streisand", "des": "donnakaran", "role": "Performer", "year": "2013", "dress": "Donna Karan", "class": "performer"}, {"name": "Norah Jones", "des": "tadashishoji", "role": "Performer", "year": "2013", "dress": "Tadashi Shoji", "class": "performer"}, {"name": "Kristin Chenoweth", "des": "tonyward", "role": "Performer", "year": "2013", "dress": "Tony Ward", "class": "performer"}, {"name": "Cate Blanchett", "des": "armani", "role": "Nominee Actress", "year": "2014", "dress": "Armani", "class": "nom lead win"}, {"name": "Amy Adams", "des": "gucci", "role": "Nominee Actress", "year": "2014", "dress": "Gucci", "class": "nom lead"}, {"name": "Sandra Bullock", "des": "alexandermcq", "role": "Nominee Actress", "year": "2014", "dress": "Alexander McQueen", "class": "nom lead"}, {"name": "Judi Dench", "des": "didnotattend", "role": "Nominee Actress", "year": "2014", "dress": "did not attend", "class": "nom lead"}, {"name": "Meryl Streep", "des": "lanvin", "role": "Nominee Actress", "year": "2014", "dress": "Lanvin", "class": "nom lead"}, {"name": "Lupita Nyong'o", "des": "prada", "role": "Nominee Supporting", "year": "2014", "dress": "Prada", "class": "nom supp win"}, {"name": "Sally Hawkins", "des": "valentino", "role": "Nominee Supporting", "year": "2014", "dress": "Valentino", "class": "nom supp"}, {"name": "Jennifer Lawrence", "des": "christiandio", "role": "Nominee Supporting", "year": "2014", "dress": "Christian Dior", "class": "nom supp"}, {"name": "Julia Roberts", "des": "givenchy", "role": "Nominee Supporting", "year": "2014", "dress": "Givenchy", "class": "nom supp"}, {"name": "June Squibb", "des": "tadashishoji", "role": "Nominee Supporting", "year": "2014", "dress": "Tadashi Shoji", "class": "nom supp"}, {"name": "Angelina Jolie", "des": "eliesaab", "role": "Presenter", "year": "2014", "dress": "Elie Saab", "class": "presenter"}, {"name": "Anna Kendrick", "des": "j.mendel", "role": "Presenter", "year": "2014", "dress": "J. Mendel", "class": "presenter"}, {"name": "Anne Hathaway", "des": "gucci", "role": "Presenter", "year": "2014", "dress": "Gucci", "class": "presenter"}, {"name": "Charlize Theron", "des": "christiandio", "role": "Presenter", "year": "2014", "dress": "Christian Dior", "class": "presenter"}, {"name": "Emma Watson", "des": "verawang", "role": "Presenter", "year": "2014", "dress": "Vera Wang", "class": "presenter"}, {"name": "Gabourey Sidibe", "des": "theia", "role": "Presenter", "year": "2014", "dress": "Theia", "class": "presenter"}, {"name": "Glenn Close", "des": "zacposen", "role": "Presenter", "year": "2014", "dress": "Zac Posen", "class": "presenter"}, {"name": "Goldie Hawn", "des": "versace", "role": "Presenter", "year": "2014", "dress": "Versace", "class": "presenter"}, {"name": "Jennifer Garner", "des": "oscardelaren", "role": "Presenter", "year": "2014", "dress": "Oscar de la Renta", "class": "presenter"}, {"name": "Jessica Biel", "des": "chanel", "role": "Presenter", "year": "2014", "dress": "Chanel", "class": "presenter"}, {"name": "Kate Hudson", "des": "versace", "role": "Presenter", "year": "2014", "dress": "Versace", "class": "presenter"}, {"name": "Kerry Washington", "des": "jasonwu", "role": "Presenter", "year": "2014", "dress": "Jason Wu", "class": "presenter"}, {"name": "Naomi Watts", "des": "calvinklein", "role": "Presenter", "year": "2014", "dress": "Calvin Klein", "class": "presenter"}, {"name": "Penelope Cruz", "des": "giambatistav", "role": "Presenter", "year": "2014", "dress": "Giambatista Valli", "class": "presenter"}, {"name": "Viola Davis", "des": "escada", "role": "Presenter", "year": "2014", "dress": "Escada", "class": "presenter"}, {"name": "Idina Menzel", "des": "verawang", "role": "Performer", "year": "2014", "dress": "Vera Wang", "class": "performer"}, {"name": "Karen O", "des": "camillastaer", "role": "Performer", "year": "2014", "dress": "Camilla Staerk", "class": "performer"}, {"name": "Bette Midler", "des": "reemacra", "role": "Performer", "year": "2014", "dress": "Reem Acra", "class": "performer"}, {"name": "Pink", "des": "eliesaab", "role": "Performer", "year": "2014", "dress": "Elie Saab", "class": "performer"}]
<!DOCTYPE html>
<meta charset="utf-8">
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"
rel="stylesheet">
<link rel="stylesheet" type="text/x-scss" href="style.css">
<body>
<div id="viz_div">
<div id="viz_div_L"></div>
<div id="viz_div_R"></div>
</div>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js">
</script>
<script href="bin.js"></script>
<script>
// true to show only the 10 nominees each year (in dot viz)
// false to see dots for all dresses
var noms_only = true
$(document).ready(function(){
var years = [2004,2015]
var h = 360;
var w = 650;
var label_margin = 50;
var x_allow = 40;
var y_allow = 50;
var padding = 10;
var pearl_padding = 10; //pixels between pearls
var r = 12;
if(!noms_only){r=5;}
var area_h = h/4
var key_h = 2000
var key_w = w/4
//hand-rolled "luxe rainbow". you like?
var emphasis_colors = [
'#7734B5', // violet
'#8E66F8', // lavender
'#B71BD0', // orchid
'#FF33CC', // hot pink
'#D81A63', // bright red
'#F45859', // inferior salmon
'#FF7D27', // bright orange
'#F9BB0B', // warmer yellow
'#FDE101', // bright yellow
'#A8D64E', // keylime green
'#86B702', // moss green
'#41A707', // kelly green
'#1F98A4', // pool green
'#00E1FA', // neon sky blue
'#0099EC', // atlantic blue
'#146EFF', // 'lectric blue
'#2E3AC4', // very boring navy blue
'#302399', // deep blue violet
'#6b6b72', // dark bluey gray
'#000000', // black?
'#ffffff', // white?
'#572981', // dark eggplant
]
//svg for main viz
var svg = d3.select('#viz_div_L').append('svg')
.attr('id','dots_svg')
.attr('height',h)
.attr('width',w+label_margin)
.append('g')
.attr('transform','translate('+label_margin+',0)');
//svg for designer key
var key_div = d3.select('#viz_div_R').append('div')
.attr('id','key_div')
var key_svg = key_div.append('svg')
.attr('id','key_svg')
.attr('height',key_h)
.attr('width',key_w)
//svg for area chart
var area_svg = d3.select('#viz_div_L').append('svg')
.attr('id','area_svg')
.attr('width',w+label_margin)
.attr('height',area_h)
.append('g')
.attr('transform','translate('+label_margin+',0)');
d3.json('data.json',function(error,json){
data = d3.nest()
.key(function(d){return d.year})
.entries(json)
json_data = json
// main visualization of nominees
var max_num_dots = Math.max.apply(
null,
$.map(data,function(d){return d['values'].length})
);
if (noms_only){max_num_dots = 10}; //delete if not displaying noms only
var x = d3.scale.ordinal()
.rangePoints([x_allow,w-x_allow])
.domain(d3.range(2004,2015))
var y = d3.scale.linear()
.range([r+pearl_padding,h-padding])
.domain([0,max_num_dots])
//shade boxes for nominee types
function shade_name(d){
if (d==0){
return 'Leading Role'
}
else{
return 'Supporting Role'
}
}
var shade_boxes = svg.selectAll('.shade_g')
.data([0,1])
.enter().append('g')
.attr('class','shade_g')
shade_boxes.append('rect')
.attr('x',-(x_allow))
.attr('y',function(d){return r+d*(h/2-2*r)})
.attr('width',w+padding*2)
.attr('height',y(4))
.style('fill','rgb(250,250,250)')
shade_boxes.append('text')
.attr('class','shade-text')
.attr('transform','rotate(-90)')
.attr('y',0)
.attr('dy','-0.5em')
.attr('x',function(d){return -(y(2+5*d))})
.style('text-anchor','middle')
.style('fill','darkgray')
.text(function(d){return shade_name(d).toUpperCase()})
//create a 'g' column for each year
var years = svg.selectAll('.year-column')
.data(data)
.enter().append('g')
.attr('class','year-column')
years
.append('line')
.attr('x1',function(d){return x(d.key)})
.attr('x2',function(d){return x(d.key)})
.attr('y1',0)
.attr('y2',function(d){return y(9)+r+pearl_padding; })
.style('stroke','gold')
.style('stroke-width','2px')
.attr('class','vert through')
years
.append('line')
.attr('x1',function(d){return (x(d.key)+x(d.key+1))/2})
.attr('x2',function(d){return (x(d.key)+x(d.key+1))/2})
.attr('y1',y_allow+padding-r-pearl_padding)
.attr('y2',function(d){return y(9)+r+pearl_padding; })
.style('stroke','gold')
.style('stroke-width','2px')
.attr('class','vert between')
years
.append('text')
.attr('x',function(d){return x(d.key)})
.attr('y',h-5)
.style('text-anchor','middle')
.text(function(d){return d.key})
.style('fill','darkgray')
.style('font-family','arial')
.attr('class','year-label')
var nominees = years.selectAll('.dot')
.data(function(d){
if (noms_only){
return d.values.filter(function(g){
return g.class.indexOf('nom') >= 0})
}
else { return d.values; }
})
.enter()
nominees
.append('line')
.attr('x1',function(d){
return x(d.year)-r-2*pearl_padding;
})
.attr('y1',function(d,i){return y(i);})
.attr('x2', function(d) {
return x(d.year)+r+2*pearl_padding;
})
.attr('y2',function(d,i){return y(i);})
.style('stroke','gold')
.style('stroke-width','2px')
nominees
.append('circle')
.attr('cx',function(d){return x(d.year)})
.attr('cy',function(d,i){return y(i);})
.attr('r',r)
.attr('id',function(d){
dotid = d.name.toLowerCase()
dotid = dotid.replace('.','')
dotid = dotid.replace(' ','')
dotid = dotid.replace(' ','')
dotid = dotid.replace("'",'')
dotid = dotid+d.year
return dotid
})
.attr('class',function(d){return 'dot '+d.class+' '+d.des})
.attr('title',function(d){
var tipstring = '<span class="tt-act">'+d.name
+'</span><br><span class="tt-role">'+d.role.replace('Actress','Lead')
+'</span><br><span class="tt-des">'+d.dress+'</span>';
return tipstring;
})
function tooltips(){
$('.dot').tooltip({
container:'#viz_div',
html:true,
placement:'left'
})
};
tooltips()
// interactive key of designers
// re-slice the data for key
key_data = d3.nest()
.key(function(d){return d.des})
.rollup(function(d){
var name = d[0].dress
if(d[0].des=='other'){
name = 'Other'
}
return {
'name':name,
'count':d3.sum(d,function(g){return 1})
}
})
.entries(json)
key_data.sort(function(a,b){
var to_bottom = ['Other','did not attend','unknown']
if ($.inArray(a.values.name,to_bottom)+1) { return 1; }
if ($.inArray(b.values.name,to_bottom)+1) { return -1; }
var ans = b.values.count - a.values.count
if ( ans==0 ) {
if ( a.key < b.key ) { return -1; }
else { return 1; }
}
return ans;
});
var key_y = d3.scale.ordinal()
.rangeBands([0,key_h-25],0.2,0)
.domain(key_data.map(function(d){return d.key}))
var kbd = d3.select('#viz_div_R')
.append('div')
.attr('id','key_button_div')
var kbg = kbd.append('svg')
.attr('id','key_button_svg')
kbg.append('rect')
.attr('class','keybttn')
.attr('x',0)
.attr('y',7)
.attr('width',key_w)
.attr('height',20)
kbg.append('text')
.attr('class','keybttntxt')
.attr('x',key_w/2)
.attr('dy','1.5em')
.style('text-anchor','middle')
.text('clear all')
.style('fill','darkgray')
var key_boxes = key_svg.selectAll('.kg')
.data(key_data)
.enter().append('g')
.attr('class','kg')
.attr('title',function(d){return d.values.name})
.attr('transform',function(d){
return 'translate(0,'+key_y(d.key)+')';
})
key_boxes
.append('rect')
.attr('x',0)
.attr('height',key_y.rangeBand())
.attr('width',key_w)
.attr('class',function(d){return 'kbox '+d.key})
.attr('fill',function(d,i){
return emphasis_colors[i%emphasis_colors.length]})
key_boxes
.append('text')
.attr('x',key_w/2)
.attr('dy','1.2em')
.attr('class','ktxt')
.style('text-anchor','middle')
.style('fill','darkgray')
.style('font-size','11')
.text(function(d){return d.values.name.toUpperCase()})
// area chart at bottom
var area_des = 'versace'
var area_y = d3.scale.linear()
.range([area_h-padding,padding])
.domain([0,5])
var area = d3.svg.area()
.x(function(d){return x(d.year)})
.y0(area_y(0))
.y1(function(d){return area_y(d.count)})
// .interpolate('monotone')
function get_area_data(des){
data = []
function des_count(year){
return json
.filter(function(d){return d.year == year;})
.filter(function(d){return d.des == des;})
.length
};
d3.range(2004,2015).forEach(function(y){
data.push({
'year':y,
'count':des_count(y)
})
});
var max_count = Math.max.apply(null,data.map(
function(d){return d.count}))
area_y.domain([0,Math.max(5,max_count)])
return data
}
var area_yAxis = d3.svg.axis()
.scale(area_y)
.orient('left')
.ticks(3)
.tickFormat(d3.format('d'))
// stripey background for area chart
area_svg.selectAll('rect')
.data(d3.range(0,6))
.enter().append('rect')
.attr('class',function(d){
if(d%2){return 'stripe even'}
else{return 'stripe odd'}
})
.attr('x',padding)
.attr('y',function(d){return area_y(d)})
.attr('width',w-(padding*2))
.attr('height',function(d){return area_y(d)-area_y(d+1)})
var area_graph = area_svg.append('path')
.datum(get_area_data(area_des))
.attr('class','area')
.attr('d',area)
var area_ax = area_svg
.append('g')
.attr('transform','translate('+(x_allow-10)+',0)')
.attr('class','y axis')
area_ax.call(area_yAxis)
// designer family highlighting
click_hold = []
function click_hold_pop(des){
if(des === undefined){
des = click_hold[click_hold.length-1]
}
var i = click_hold.indexOf(des)
click_hold.splice(i,1)
return des
}
var emphasis = function(){
return emphasis_colors[click_hold.length]
}
function lights_on(des){
if( $.inArray(des,click_hold)+1 ){ return }
d3.select('.kbox.'+des)
.transition()
.style('stroke','darkgray')
d3.selectAll('.dot.'+des)
.transition()
.style('fill',emphasis)
d3.selectAll('.dot.win.'+des)
.transition()
.attr('r',15)
.style('fill',emphasis)
.style('stroke-width','6px')
update_area(des)
}
function lights_on_me(dot){
dot_id = $(dot).attr('id')
des = get_des(dot)
if( $.inArray(des,click_hold)+1 ){ return }
d3.select('#'+dot_id)
.transition()
.style('fill',emphasis)
d3.select('#'+dot_id+'.win')
.transition()
.attr('r',15)
.style('fill',emphasis)
.style('stroke-width','6px')
update_area(des);
}
function lights_off(des){
if( $.inArray(des,click_hold)+1 ){ return }
d3.select('.kbox.'+des)
.transition()
.style('stroke','')
.style('fill','')
d3.selectAll('.dot.'+des)
.transition()
.style('fill','')
d3.selectAll('.dot.win.'+des)
.transition()
.attr('r',r)
.style('fill','')
.style('stroke-width','')
}
function lights_off_me(dot){
dot_id = $(dot).attr('id')
des = get_des(dot)
if( $.inArray(des,click_hold)+1 ){ return }
d3.select('#'+dot_id)
.transition()
.style('fill','')
d3.select('#'+dot_id+'.win')
.transition()
.attr('r',r)
.style('stroke-width','')
.style('fill','')
}
function get_des(thing){
cls = $(thing).attr('class').split(' ');
len = cls.length
return cls[len-1]
}
function update_area(des){
area_graph
.datum(get_area_data(des))
.transition()
.duration(400)
.attr('d',area)
area_ax.transition().duration(400).call(area_yAxis)
}
// hover over a designer
$('rect.kbox').hover(
//mouseover
function(){
lights_on(get_des(this));
update_area(get_des(this));
},
//mouseout
function(){
lights_off(get_des(this));
}
)
// click on a designer
$('rect.kbox').click(
function(){
var des = get_des(this)
if( !($.inArray(des,click_hold)+1) ){
lights_on(des)
d3.select('.kbox.'+des)
.transition()
.style('fill',emphasis)
click_hold.push(des);
return
}
//otherwise, pop it from the array and turn it off
des = click_hold_pop(des)
lights_off(des)
})
// hover over a dot
$('.dot').hover(
function(){
lights_on_me(this);
update_area(get_des(this));
},
function(){
lights_off_me(this);
}
)
// click on a dot
$('.dot').click(
function(){
dot_id = $(this).attr('id')
des = d3.select('#'+dot_id).data()[0].des
if( !($.inArray(des,click_hold)+1) ){
lights_on(des)
d3.select('.kbox.'+des)
.transition()
.style('fill',emphasis)
update_area(des)
click_hold.push(des);
return
}
des = click_hold_pop(des)
lights_off(des)
}
)
$('.keybttn').click(
function(){
while(click_hold.length > 0){
des = click_hold_pop()
lights_off(des)
}
}
)//keybttn click
});//json
});//document.ready
</script>
#viz_div_L{
display:inline;
float:left;
margin-top:20px;
}
#viz_div_R{
display:inline;
float:left;
max-width:180px;
margin-top:20px;
}
/* DOTS */
#dots_svg{
display:inline;
}
.dot {
fill: aliceblue;
stroke: lightgray;
stroke-width: 2px;
}
.dot.win {
stroke: gold;
stroke-width: 3px;
}
#dots_svg g.year-column text.year-label{
font-size:18px;
dy:-0.5em;
}
/* tooltips */
span.tt-act{
color:gold;
font-size:18px;
}
span.tt-des{
color:#f9bb0b;
font-size:18px;
}
/* KEY */
#key_div{
max-height:430px;
overflow-y:scroll;
}
.kbox {
pointer-events:all;
fill: gold;
}
.ktxt {
pointer-events:none;
}
.keybttn {
fill:whitesmoke;
pointer-events:all;
}
.keybttntxt {
pointer-events:none;
}
/* AREA */
#area_svg{
display:block;
}
.area {
fill: darkgray;
}
.axis path,
.axis line {
fill: none;
stroke: none;
}
.axis text{
fill: darkgray;
}
.stripe.even{
fill:rgb(243,243,243);
}
.stripe.odd{
fill:rgb(250,250,250);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment