An interactive Highcharts visualization created with R using rCharts
Click on the observations to read more about the movies at Rotten Tomatoes
Created by Thomas Reinholdsson
An interactive Highcharts visualization created with R using rCharts
Click on the observations to read more about the movies at Rotten Tomatoes
Created by Thomas Reinholdsson
library(httr) | |
library(rCharts) | |
library(RJSONIO) | |
library(data.table) | |
# Settings | |
.API_KEY <- "" # fill in your api key | |
.LIMIT <- 50 | |
.URL <- sprintf( | |
"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/top_rentals.json?apikey=%s&limit=%s", | |
.API_KEY, | |
.LIMIT | |
) | |
# Retrieve the data from the API | |
movieJSON <- paste(readLines(.URL, warn = FALSE), collapse = "") | |
movieList <- fromJSON(movieJSON, simplify = F) | |
movieTable <- rbindlist(lapply(movieList$movies, function(movie) { | |
data.table( | |
x = movie$ratings$critics_score, | |
y = movie$ratings$audience_score, | |
name = sprintf("<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>%1$s</th></tr><tr><td><img src='%2$s' height='91' width='61'></td><td align='left'>Year: %3$s<br>Runtime: %6$s<br>Audience: %7$s<br>Critics: %4$s<br>M-rating: %5$s</td></tr></table>", | |
movie$title, | |
movie$posters$thumbnail, | |
movie$year, | |
movie$ratings$critics_rating, | |
movie$mpaa_rating, | |
movie$runtime, | |
movie$ratings$audience_rating | |
), | |
url = movie$links$alternate, | |
category = movie$mpaa_rating | |
) | |
})) | |
# Split the list into categories | |
movieSeries <- lapply(split(movieTable, movieTable$category), function(x) { | |
res <- lapply(split(x, rownames(x)), as.list) | |
names(res) <- NULL | |
return(res) | |
}) | |
# Create the chart object | |
a <- rCharts::Highcharts$new() | |
invisible(sapply(movieSeries, function(x) { | |
a$series(data = x, type = "scatter", name = x[[1]]$category) | |
} | |
)) | |
a$plotOptions( | |
scatter = list( | |
cursor = "pointer", | |
point = list( | |
events = list( | |
click = "#! function() { window.open(this.options.url); } !#")), | |
marker = list( | |
symbol = "circle", | |
radius = 5 | |
) | |
) | |
) | |
a$xAxis(title = list(text = "Critics Score"), labels = list(format = "{value} %")) | |
a$yAxis(title = list(text = "Audience Score"), labels = list(format = "{value} %")) | |
a$tooltip(useHTML = T, formatter = "#! function() { return this.point.name; } !#") | |
a$colors( | |
'rgba(223, 83, 83, .75)', | |
'rgba(60, 179, 113, .75)', | |
'rgba(238, 130, 238, .75)', | |
'rgba(30, 144, 255, .75)', | |
'rgba(139, 139, 131, .75)' | |
) | |
a$legend( | |
align = 'right', | |
verticalAlign = 'middle', | |
layout = 'vertical', | |
title = list(text = "M-Rating") | |
) | |
a$title(text = "Top 50 DVD Rentals") | |
a$subtitle(text = "Retrieved using the Rotten Tomatoes API") | |
# Plot it! | |
a |
<!doctype HTML> | |
<html> | |
<head> | |
<link rel='stylesheet' href="http://netdna.bootstrapcdn.com/bootswatch/2.3.1/cosmo/bootstrap.min.css"> | |
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css" > | |
<link rel='stylesheet' href="http://twitter.github.io/bootstrap/assets/js/google-code-prettify/prettify.css"> | |
<script src='http://code.jquery.com/jquery-1.9.1.min.js' type='text/javascript'></script> | |
<script src='http://code.highcharts.com/highcharts.js' type='text/javascript'></script> | |
<script src='http://code.highcharts.com/highcharts-more.js' type='text/javascript'></script> | |
<style> | |
.rChart { | |
display: block | |
margin: auto auto; | |
width: 800px; | |
height: 400px; | |
} | |
body { | |
margin-top: 60px; | |
} | |
</style> | |
</head> | |
<body> | |
<div class='container'> | |
<div class='row'> | |
<div class='span9'> | |
<div id='chart20921d7918e' class='rChart nvd3Plot highcharts'></div> | |
<br/> | |
<pre><code class='r'>library(httr) | |
library(rCharts) | |
library(RJSONIO) | |
library(data.table) | |
# Settings | |
.API_KEY <- "" # fill in your api key | |
.LIMIT <- 50 | |
.URL <- sprintf( | |
"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/top_rentals.json?apikey=%s&limit=%s", | |
.API_KEY, | |
.LIMIT | |
) | |
# Retrieve the data from the API | |
movieJSON <- paste(readLines(.URL, warn = FALSE), collapse = "") | |
movieList <- fromJSON(movieJSON, simplify = F) | |
movieTable <- rbindlist(lapply(movieList$movies, function(movie) { | |
data.table( | |
x = movie$ratings$critics_score, | |
y = movie$ratings$audience_score, | |
name = sprintf("<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>%1$s</th></tr><tr><td><img src='%2$s' height='91' width='61'></td><td align='left'>Year: %3$s<br>Runtime: %6$s<br>Audience: %7$s<br>Critics: %4$s<br>M-rating: %5$s</td></tr></table>", | |
movie$title, | |
movie$posters$thumbnail, | |
movie$year, | |
movie$ratings$critics_rating, | |
movie$mpaa_rating, | |
movie$runtime, | |
movie$ratings$audience_rating | |
), | |
url = movie$links$alternate, | |
category = movie$mpaa_rating | |
) | |
})) | |
# Split the list into categories | |
movieSeries <- lapply(split(movieTable, movieTable$category), function(x) { | |
res <- lapply(split(x, rownames(x)), as.list) | |
names(res) <- NULL | |
return(res) | |
}) | |
# Create the chart object | |
a <- rCharts::Highcharts$new() | |
invisible(sapply(movieSeries, function(x) { | |
a$series(data = x, type = "scatter", name = x[[1]]$category) | |
} | |
)) | |
a$plotOptions( | |
scatter = list( | |
cursor = "pointer", | |
point = list( | |
events = list( | |
click = "#! function() { window.open(this.options.url); } !#")), | |
marker = list( | |
symbol = "circle", | |
radius = 5 | |
) | |
) | |
) | |
a$xAxis(title = list(text = "Critics Score"), labels = list(format = "{value} %")) | |
a$yAxis(title = list(text = "Audience Score"), labels = list(format = "{value} %")) | |
a$tooltip(useHTML = T, formatter = "#! function() { return this.point.name; } !#") | |
a$colors( | |
'rgba(223, 83, 83, .75)', | |
'rgba(60, 179, 113, .75)', | |
'rgba(238, 130, 238, .75)', | |
'rgba(30, 144, 255, .75)', | |
'rgba(139, 139, 131, .75)' | |
) | |
a$legend( | |
align = 'right', | |
verticalAlign = 'middle', | |
layout = 'vertical', | |
title = list(text = "M-Rating") | |
) | |
a$title(text = "Top 50 DVD Rentals") | |
a$subtitle(text = "Retrieved using the Rotten Tomatoes API") | |
# Plot it! | |
a | |
</code></pre> | |
</div> | |
</div> | |
</div> | |
<script type='text/javascript'> | |
(function($){ | |
$(function () { | |
var chart = new Highcharts.Chart({ | |
"dom": "chart20921d7918e", | |
"width": 800, | |
"height": 400, | |
"credits": { | |
"href": null, | |
"text": null | |
}, | |
"title": { | |
"text": "Top 50 DVD Rentals" | |
}, | |
"yAxis": { | |
"title": { | |
"text": "Audience Score" | |
}, | |
"labels": { | |
"format": "{value} %" | |
} | |
}, | |
"series": [ | |
{ | |
"data": [ | |
{ | |
"x": 99, | |
"y": 82, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Finding Nemo</th></tr><tr><td><img src='http://content6.flixster.com/movie/10/84/19/10841916_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2003<br>Runtime: 100<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: G</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/finding_nemo/", | |
"category": "G" | |
} | |
], | |
"type": "scatter", | |
"name": "G" | |
}, | |
{ | |
"data": [ | |
{ | |
"x": 27, | |
"y": 57, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Escape From Planet Earth</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/16/11171699_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 89<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: PG</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/escape_from_planet_earth_2013/", | |
"category": "PG" | |
}, | |
{ | |
"x": 85, | |
"y": 62, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>A Monster in Paris</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/15/93/11159334_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2011<br>Runtime: 89<br>Audience: Upright<br>Critics: Fresh<br>M-rating: PG</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/a_monster_in_paris/", | |
"category": "PG" | |
}, | |
{ | |
"x": 98, | |
"y": 84, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Brooklyn Castle</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/67/11166757_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 102<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: PG</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/brooklyn_castle_2012/", | |
"category": "PG" | |
} | |
], | |
"type": "scatter", | |
"name": "PG" | |
}, | |
{ | |
"data": [ | |
{ | |
"x": 80, | |
"y": 78, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Warm Bodies</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/14/11171434_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 97<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/warm_bodies/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 61, | |
"y": 69, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Jack Reacher</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/17/06/11170621_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 130<br>Audience: Upright<br>Critics: Fresh<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/jack_reacher/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 13, | |
"y": 70, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Safe Haven</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/77/11167789_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 115<br>Audience: Upright<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/safe_haven/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 38, | |
"y": 43, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Guilt Trip</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/06/11170620_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 96<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_guilt_trip/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 81, | |
"y": 85, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Impossible</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/17/03/11170393_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 113<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_impossible_2012/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 45, | |
"y": 56, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Beautiful Creatures</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/07/11170795_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 124<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/beautiful_creatures_2013/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 36, | |
"y": 54, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Dark Skies</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/13/11171396_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 97<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/dark_skies_2013/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 27, | |
"y": 50, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Sorcerer and the White Snake</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/83/11168317_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 99<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_sorcerer_and_the_white_snake/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 44, | |
"y": 76, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Last Ride</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/16/55/11165514_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 102<br>Audience: Upright<br>Critics: Rotten<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_last_ride_2011/", | |
"category": "PG-13" | |
}, | |
{ | |
"x": 65, | |
"y": 59, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Mama</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/06/11170616_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 100<br>Audience: Spilled<br>Critics: Fresh<br>M-rating: PG-13</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/mama_2013/", | |
"category": "PG-13" | |
} | |
], | |
"type": "scatter", | |
"name": "PG-13" | |
}, | |
{ | |
"data": [ | |
{ | |
"x": 15, | |
"y": 44, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>A Good Day To Die Hard</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/12/11171258_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 97<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/a_good_day_to_die_hard/", | |
"category": "R" | |
}, | |
{ | |
"x": 85, | |
"y": 75, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Side Effects</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/07/11170750_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 106<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/side_effects_2013/", | |
"category": "R" | |
}, | |
{ | |
"x": 30, | |
"y": 43, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Broken City</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/06/11170618_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 108<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/broken_city/", | |
"category": "R" | |
}, | |
{ | |
"x": 40, | |
"y": 54, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Parker</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/13/11171324_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 118<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/parker_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 88, | |
"y": 94, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Django Unchained</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/17/11171702_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 165<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/django_unchained_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 60, | |
"y": 58, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Last Stand</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/09/11170918_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 107<br>Audience: Spilled<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/last_stand_2013/", | |
"category": "R" | |
}, | |
{ | |
"x": 51, | |
"y": 45, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Promised Land</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/06/11170615_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 106<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/1016837-promised_land/", | |
"category": "R" | |
}, | |
{ | |
"x": 38, | |
"y": 50, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Stand Up Guys</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/13/11171323_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 94<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/stand_up_guys/", | |
"category": "R" | |
}, | |
{ | |
"x": 23, | |
"y": 49, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Haunting in Connecticut 2: Ghosts of Georgia</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/03/11170392_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 100<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_haunting_in_connecticut_2_ghosts_of_georgia/", | |
"category": "R" | |
}, | |
{ | |
"x": 38, | |
"y": 34, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Hyde Park on Hudson</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/94/11169447_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 95<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/hyde_park_on_hudson/", | |
"category": "R" | |
}, | |
{ | |
"x": 38, | |
"y": 33, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The ABCs of Death</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/16/42/11164272_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 129<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_abcs_of_death/", | |
"category": "R" | |
}, | |
{ | |
"x": 67, | |
"y": 71, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Cloud Atlas</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/87/11168701_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 172<br>Audience: Upright<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/cloud_atlas_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 60, | |
"y": 55, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>John Dies at the End</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/71/11167149_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 99<br>Audience: Spilled<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/john_dies_at_the_end/", | |
"category": "R" | |
}, | |
{ | |
"x": 84, | |
"y": 72, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Dragon</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/73/11167303_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 98<br>Audience: Upright<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/swordsmen/", | |
"category": "R" | |
}, | |
{ | |
"x": 44, | |
"y": 42, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Bad Kids Go to Hell</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/72/11167299_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 91<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/bad_kids_go_to_hell/", | |
"category": "R" | |
}, | |
{ | |
"x": 46, | |
"y": 46, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Sweeney</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/96/11169663_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 112<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_sweeney/", | |
"category": "R" | |
}, | |
{ | |
"x": 92, | |
"y": 88, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Silver Linings Playbook</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/06/11170611_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 122<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/silver_linings_playbook/", | |
"category": "R" | |
}, | |
{ | |
"x": 76, | |
"y": 72, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>It's a Disaster</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/56/11165615_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 88<br>Audience: Upright<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/its_a_disaster/", | |
"category": "R" | |
}, | |
{ | |
"x": 31, | |
"y": 36, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Oranges</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/11/11171116_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 92<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_oranges_2011/", | |
"category": "R" | |
}, | |
{ | |
"x": 77, | |
"y": 75, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Any Day Now</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/16/75/11167534_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 97<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/any_day_now_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 27, | |
"y": 29, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Numbers Station</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/94/11169469_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 89<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_numbers_station/", | |
"category": "R" | |
}, | |
{ | |
"x": 45, | |
"y": 37, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Details</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/16/71/11167100_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 91<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_details_2010/", | |
"category": "R" | |
}, | |
{ | |
"x": 19, | |
"y": 55, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Baytown Outlaws</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/78/11167811_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 98<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_baytown_outlaws/", | |
"category": "R" | |
}, | |
{ | |
"x": 44, | |
"y": 39, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Save The Date</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/72/11167249_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 98<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/save_the_date_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 69, | |
"y": 46, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Not Fade Away</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/17/06/11170619_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 112<br>Audience: Spilled<br>Critics: Fresh<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/not_fade_away_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 19, | |
"y": 45, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Texas Chainsaw</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/17/13/11171397_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 91<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/texas_chainsaw/", | |
"category": "R" | |
}, | |
{ | |
"x": 32, | |
"y": 61, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Gangster Squad</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/17/03/11170394_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 110<br>Audience: Upright<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/gangster_squad_2012/", | |
"category": "R" | |
}, | |
{ | |
"x": 20, | |
"y": 58, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Identity Thief</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/17/09/11170920_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 112<br>Audience: Spilled<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/identity_thief/", | |
"category": "R" | |
}, | |
{ | |
"x": 12, | |
"y": 60, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>A Haunted House</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/17/06/11170617_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 86<br>Audience: Upright<br>Critics: Rotten<br>M-rating: R</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/a_haunted_house/", | |
"category": "R" | |
} | |
], | |
"type": "scatter", | |
"name": "R" | |
}, | |
{ | |
"data": [ | |
{ | |
"x": 68, | |
"y": 51, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Wuthering Heights</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/16/69/11166968_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 128<br>Audience: Spilled<br>Critics: Certified Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/wuthering_heights_2011/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 94, | |
"y": 85, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>The Central Park Five</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/74/11167457_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 120<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/the_central_park_five_2012/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 80, | |
"y": 67, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Hitler's Children</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/71/11167119_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 80<br>Audience: Upright<br>Critics: Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/hitlers_children_2012/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 27, | |
"y": 62, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Struck by Lightning</th></tr><tr><td><img src='http://content7.flixster.com/movie/11/16/87/11168777_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 84<br>Audience: Upright<br>Critics: Rotten<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/struck_by_lightning_2012/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 93, | |
"y": 77, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Lore</th></tr><tr><td><img src='http://content8.flixster.com/movie/11/16/67/11166766_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 108<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/lore/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 88, | |
"y": 77, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Upstream Color</th></tr><tr><td><img src='http://content6.flixster.com/movie/11/16/78/11167896_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2013<br>Runtime: 96<br>Audience: Upright<br>Critics: Certified Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/upstream_color/", | |
"category": "Unrated" | |
}, | |
{ | |
"x": 93, | |
"y": 69, | |
"name": "<table cellpadding='4' style='line-height:1.5'><tr><th colspan='3'>Meet the Fokkens</th></tr><tr><td><img src='http://content9.flixster.com/movie/11/16/60/11166083_mob.jpg' height='91' width='61'></td><td align='left'>Year: 2012<br>Runtime: 80<br>Audience: Upright<br>Critics: Fresh<br>M-rating: Unrated</td></tr></table>", | |
"url": "http://www.rottentomatoes.com/m/meet_the_fokkens/", | |
"category": "Unrated" | |
} | |
], | |
"type": "scatter", | |
"name": "Unrated" | |
} | |
], | |
"plotOptions": { | |
"scatter": { | |
"cursor": "pointer", | |
"point": { | |
"events": { | |
"click": function() { window.open(this.options.url); } | |
} | |
}, | |
"marker": { | |
"symbol": "circle", | |
"radius": 5 | |
} | |
} | |
}, | |
"xAxis": { | |
"title": { | |
"text": "Critics Score" | |
}, | |
"labels": { | |
"format": "{value} %" | |
} | |
}, | |
"tooltip": { | |
"useHTML": true, | |
"formatter": function() { return this.point.name; } | |
}, | |
"colors": [ | |
"rgba(223, 83, 83, .75)", | |
"rgba(60, 179, 113, .75)", | |
"rgba(238, 130, 238, .75)", | |
"rgba(30, 144, 255, .75)", | |
"rgba(139, 139, 131, .75)" | |
], | |
"legend": { | |
"align": "right", | |
"verticalAlign": "middle", | |
"layout": "vertical", | |
"title": { | |
"text": "M-Rating" | |
} | |
}, | |
"subtitle": { | |
"text": "Retrieved using the Rotten Tomatoes API" | |
}, | |
"id": "chart20921d7918e", | |
"chart": { | |
"renderTo": "chart20921d7918e" | |
} | |
}); | |
}); | |
})(jQuery); | |
</script> | |
</body> | |
<!-- Google Prettify --> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/prettify/188.0.0/prettify.js"></script> | |
<script | |
src='https://google-code-prettify.googlecode.com/svn-history/r232/trunk/src/lang-r.js'> | |
</script> | |
<script> | |
var pres = document.getElementsByTagName("pre"); | |
for (var i=0; i < pres.length; ++i) { | |
pres[i].className = "prettyprint linenums"; | |
} | |
prettyPrint(); | |
</script> | |
</html> |
The style/css needs to be tweaked a bit to be fully compatible with Firefox and/or IE.