Skip to content

Instantly share code, notes, and snippets.

@k0emt
Created May 26, 2016 21:14
Show Gist options
  • Save k0emt/fa62616f4ca9ba82715ac037da9411a3 to your computer and use it in GitHub Desktop.
Save k0emt/fa62616f4ca9ba82715ac037da9411a3 to your computer and use it in GitHub Desktop.
Brushable Radial Chart

A modification of Susie Lu's radial weather plot. This one shows periods of cloudiness, precipitation and freezing temperatures via the bars around the border. It also includes a circular brush that lets you select a band on the radial chart. The selected band is then displayed in a more traditional linear way on the bottom left.

The original readme explains what's going on with the radial chart:

Weather Plot - New York 2015

In the example we're looking at historical weather data for New York provided by intellicast.com and wunderground.com. Inspired by weather-radicals.com.

This example uses scales to roll your own radial projection by mapping out the x, y, and r positions. If you are creating a line or an area you can use d3's convenience functions d3.svg.line.radial and d3.svg.area.radial but this is a method you can use if you want to use different graphical elements in a circular layout.

forked from emeeks's block: Brushable Radial Chart

[
{
"date": "1/1/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/2/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "1/3/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/4/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "1/5/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/6/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/7/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/8/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/9/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/10/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/11/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/12/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "1/13/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/14/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "1/15/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/16/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/17/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/18/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "1/19/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "1/20/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "1/21/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "1/22/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "1/23/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/24/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "1/25/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "1/26/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "1/27/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/28/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "1/29/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/30/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "1/31/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/1/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "2/2/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "2/3/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/4/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "2/5/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "2/6/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/7/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "2/8/15",
"freeze": true,
"rain": false,
"cloud": "overcast"
},
{
"date": "2/9/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "2/10/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "2/11/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/12/15",
"freeze": true,
"rain": false,
"cloud": "overcast"
},
{
"date": "2/13/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/14/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "2/15/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "2/16/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/17/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "2/18/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "2/19/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "2/20/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/21/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "2/22/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "2/23/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "2/24/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/25/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "2/26/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "2/27/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "2/28/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/1/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/2/15",
"freeze": true,
"rain": false,
"cloud": "cloudy"
},
{
"date": "3/3/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/4/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/5/15",
"freeze": true,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/6/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/7/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "3/8/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "3/9/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "3/10/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/11/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "3/13/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/14/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/15/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "3/16/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "3/17/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/18/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "3/19/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/20/15",
"freeze": true,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/21/15",
"freeze": true,
"rain": false,
"cloud": "overcast"
},
{
"date": "3/22/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/23/15",
"freeze": true,
"rain": false,
"cloud": "clear"
},
{
"date": "3/24/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "3/25/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "3/26/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/27/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "3/28/15",
"freeze": true,
"rain": false,
"cloud": "overcast"
},
{
"date": "3/29/15",
"freeze": true,
"rain": false,
"cloud": "scattered"
},
{
"date": "3/30/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "3/31/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/1/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/2/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/3/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/4/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/5/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "4/6/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/7/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "4/8/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "4/9/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "4/10/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "4/11/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/13/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/14/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/15/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/16/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/17/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/18/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/19/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/20/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "4/21/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "4/22/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "4/23/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "4/24/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "4/25/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/26/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "4/27/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "4/28/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "4/29/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "4/30/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/1/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/2/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/3/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/4/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/5/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/6/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/7/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/8/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/9/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "5/10/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/11/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/12/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/13/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/14/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/15/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/16/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "5/17/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "5/18/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "5/19/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/20/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/21/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/22/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "5/23/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/24/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/25/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/26/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/27/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "5/28/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "5/29/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/30/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "5/31/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "6/1/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/2/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/3/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "6/4/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "6/5/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/6/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "6/7/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/8/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "6/9/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "6/10/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/11/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/13/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "6/14/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "6/15/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/16/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "6/17/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "6/18/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "6/19/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "6/20/15",
"freeze": false,
"rain": false,
"cloud": "overcast"
},
{
"date": "6/21/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/22/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/23/15",
"freeze": false,
"rain": true,
"cloud": "clear"
},
{
"date": "6/24/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/25/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "6/26/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "6/27/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/28/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "6/29/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "6/30/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/1/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/2/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/3/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/4/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "7/5/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/6/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "7/7/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/8/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/9/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/10/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "7/11/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/13/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/14/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/15/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/16/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/17/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/18/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/19/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/20/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/21/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/22/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/23/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/24/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/25/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/26/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "7/27/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/28/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/29/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "7/30/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "7/31/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/1/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/2/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/3/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/4/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "8/5/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/6/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/7/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/8/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/9/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "8/10/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "8/11/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "8/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/13/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/14/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/15/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/16/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/17/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "8/18/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "8/19/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "8/20/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "8/21/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "8/22/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/23/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "8/24/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "8/25/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "8/26/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/27/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/28/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/29/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "8/30/15",
"freeze": false,
"rain": true,
"cloud": "scattered"
},
{
"date": "8/31/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/1/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/2/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/3/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/4/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "9/5/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/6/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/7/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/8/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/9/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "9/10/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "9/11/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "9/12/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "9/13/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "9/14/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/15/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/16/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/17/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/18/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/19/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "9/20/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "9/21/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/22/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "9/23/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/24/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/25/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/26/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "9/27/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "9/28/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "9/29/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "9/30/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "10/1/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "10/2/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "10/3/15",
"freeze": false,
"rain": true,
"cloud": "overcast"
},
{
"date": "10/4/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "10/5/15",
"freeze": false,
"rain": false,
"cloud": "cloudy"
},
{
"date": "10/6/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "10/7/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "10/8/15",
"freeze": false,
"rain": false,
"cloud": "scattered"
},
{
"date": "10/9/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
},
{
"date": "10/10/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "10/11/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "10/12/15",
"freeze": false,
"rain": false,
"cloud": "clear"
},
{
"date": "10/13/15",
"freeze": false,
"rain": true,
"cloud": "cloudy"
}
]
d3.svg.circularbrush = function() {
var _extent = [0,Math.PI * 2];
var _circularbrushDispatch = d3.dispatch('brushstart', 'brushend', 'brush');
var _arc = d3.svg.arc().innerRadius(50).outerRadius(100);
var _brushData = [
{startAngle: _extent[0], endAngle: _extent[1], class: "extent"},
{startAngle: _extent[0] - .2, endAngle: _extent[0], class: "resize e"},
{startAngle: _extent[1], endAngle: _extent[1] + .2, class: "resize w"}
];
var _newBrushData = [];
var d3_window = d3.select(window);
var _origin;
var _brushG;
var _handleSize = .2;
var _scale = d3.scale.linear().domain(_extent).range(_extent);
function _circularbrush(_container) {
_brushG = _container
.append("g")
.attr("class", "circularbrush");
_brushG
.selectAll("path.circularbrush")
.data(_brushData)
.enter()
.insert("path", "path.resize")
.attr("d", _arc)
.attr("class", function(d) {return d.class + " circularbrush"})
_brushG.select("path.extent")
.on("mousedown.brush", resizeDown)
_brushG.selectAll("path.resize")
.on("mousedown.brush", resizeDown)
return _circularbrush;
}
_circularbrush.extent = function(_value) {
var _d = _scale.domain();
var _r = _scale.range();
var _actualScale = d3.scale.linear()
.domain([-_d[1],_d[0],_d[0],_d[1]])
.range([_r[0],_r[1],_r[0],_r[1]])
if (!arguments.length) return [_actualScale(_extent[0]),_actualScale(_extent[1])];
_extent = [_scale.invert(_value[0]),_scale.invert(_value[1])];
return this
}
_circularbrush.handleSize = function(_value) {
if (!arguments.length) return _handleSize;
_handleSize = _value;
_brushData = [
{startAngle: _extent[0], endAngle: _extent[1], class: "extent"},
{startAngle: _extent[0] - _handleSize, endAngle: _extent[0], class: "resize e"},
{startAngle: _extent[1], endAngle: _extent[1] + _handleSize, class: "resize w"}
];
return this
}
_circularbrush.innerRadius = function(_value) {
if (!arguments.length) return _arc.innerRadius();
_arc.innerRadius(_value);
return this
}
_circularbrush.outerRadius = function(_value) {
if (!arguments.length) return _arc.outerRadius();
_arc.outerRadius(_value);
return this
}
_circularbrush.range = function(_value) {
if (!arguments.length) return _scale.range();
_scale.range(_value);
return this
}
_circularbrush.arc = function(_value) {
if (!arguments.length) return _arc;
_arc = _value;
return this
}
d3.rebind(_circularbrush, _circularbrushDispatch, "on");
return _circularbrush;
function resizeDown(d) {
var _mouse = d3.mouse(_brushG.node());
_originalBrushData = {startAngle: _brushData[0].startAngle, endAngle: _brushData[0].endAngle};
_origin = _mouse;
if (d.class == "resize e") {
d3_window
.on("mousemove.brush", function() {resizeMove("e")})
.on("mouseup.brush", extentUp);
}
else if (d.class == "resize w") {
d3_window
.on("mousemove.brush", function() {resizeMove("w")})
.on("mouseup.brush", extentUp);
}
else {
d3_window
.on("mousemove.brush", function() {resizeMove("extent")})
.on("mouseup.brush", extentUp);
}
_circularbrushDispatch.brushstart();
}
function resizeMove(_resize) {
var _mouse = d3.mouse(_brushG.node());
var _current = Math.atan2(_mouse[1],_mouse[0]);
var _start = Math.atan2(_origin[1],_origin[0]);
if (_resize == "e") {
var clampedAngle = Math.max(Math.min(_originalBrushData.startAngle + (_current - _start), _originalBrushData.endAngle), _originalBrushData.endAngle - (2 * Math.PI));
if (_originalBrushData.startAngle + (_current - _start) > _originalBrushData.endAngle) {
clampedAngle = _originalBrushData.startAngle + (_current - _start) - (Math.PI * 2);
}
else if (_originalBrushData.startAngle + (_current - _start) < _originalBrushData.endAngle - (Math.PI * 2)) {
clampedAngle = _originalBrushData.startAngle + (_current - _start) + (Math.PI * 2);
}
var _newStartAngle = clampedAngle;
var _newEndAngle = _originalBrushData.endAngle;
}
else if (_resize == "w") {
var clampedAngle = Math.min(Math.max(_originalBrushData.endAngle + (_current - _start), _originalBrushData.startAngle), _originalBrushData.startAngle + (2 * Math.PI))
if (_originalBrushData.endAngle + (_current - _start) < _originalBrushData.startAngle) {
clampedAngle = _originalBrushData.endAngle + (_current - _start) + (Math.PI * 2);
}
else if (_originalBrushData.endAngle + (_current - _start) > _originalBrushData.startAngle + (Math.PI * 2)) {
clampedAngle = _originalBrushData.endAngle + (_current - _start) - (Math.PI * 2);
}
var _newStartAngle = _originalBrushData.startAngle;
var _newEndAngle = clampedAngle;
}
else {
var _newStartAngle = _originalBrushData.startAngle + (_current - _start * 1);
var _newEndAngle = _originalBrushData.endAngle + (_current - _start * 1);
}
_newBrushData = [
{startAngle: _newStartAngle, endAngle: _newEndAngle, class: "extent"},
{startAngle: _newStartAngle - _handleSize, endAngle: _newStartAngle, class: "resize e"},
{startAngle: _newEndAngle, endAngle: _newEndAngle + _handleSize, class: "resize w"}
]
_brushG
.selectAll("path.circularbrush")
.data(_newBrushData)
.attr("d", _arc)
if (_newStartAngle > (Math.PI * 2)) {
_newStartAngle = (_newStartAngle - (Math.PI * 2));
}
else if (_newStartAngle < -(Math.PI * 2)) {
_newStartAngle = (_newStartAngle + (Math.PI * 2));
}
if (_newEndAngle > (Math.PI * 2)) {
_newEndAngle = (_newEndAngle - (Math.PI * 2));
}
else if (_newEndAngle < -(Math.PI * 2)) {
_newEndAngle = (_newEndAngle + (Math.PI * 2));
}
_extent = ([_newStartAngle,_newEndAngle]);
_circularbrushDispatch.brush();
}
function extentUp() {
_brushData = _newBrushData;
d3_window.on("mousemove.brush", null).on("mouseup.brush", null);
_circularbrushDispatch.brushend();
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href='https://fonts.googleapis.com/css?family=Lato:300' rel='stylesheet' type='text/css'>
<style>
body {
background-color: whitesmoke;
}
.extent {
fill-opacity: .1;
fill: rgb(205,130,42);
cursor: move;
}
.e {
fill: rgb(111,111,111);
cursor: move;
}
.w {
fill: rgb(169,169,169);
cursor: move;
}
.freeze {
fill: #A8DFE4;
}
.rain {
fill: #209CD3;
}
.clear {
fill: white
}
.scattered {
fill: lightgray;
}
.cloudy {
fill: #a1a1a1;
}
.overcast {
fill: #616161;
}
svg {
background-color: white;
font-family: 'Lato';
}
.axis {
stroke: white;
opacity: .8;
}
text {
pointer-events: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
text.title {
font-size: 26px;
}
text.months, text.temp {
text-anchor: middle;
font-size: 12px;
fill: #39837B;
}
circle.axis {
stroke: white;
stroke-width: 1px;
fill: none;
}
circle.axis.record {
stroke: #bae0d6;
stroke-width: 1.2px;
opacity: 1;
}
line.record, line.avg, line.yearLow, line.yearHigh{
stroke-width: 2px;
}
line.record {
stroke: #bae0d6;
}
line.avg {
stroke: #3FA39E;
opacity: .5;
}
line.year {
stroke: #006358;
}
line.yearLow, line.yearHigh{
stroke: #F97F5A;
}
.avg {
stroke: #3FA39E;
fill: #3FA39E;
}
.record {
stroke: #bae0d6;
fill: #bae0d6;
.opacity: .5;
}
.year {
stroke: #F97F5A;
fill: #F97F5A;
}
.beyond {
stroke: #445E5B;
fill: #445E5B;
}
</style>
</head>
<body>
<svg width=960 height=500></svg>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/1.3.0/d3-legend.min.js"></script>
<script src="d3.svg.circularbrush.js" charset="utf-8" type="text/javascript"></script>
<script>
var width = 960,
margin = 20,
height = 500,
svg = d3.select('svg'),
origin = svg.append('g')
.attr('transform', 'translate(' + width*3/5 + ',' + height/2 + ')'),
rScale = d3.scale.linear()
.domain([-10, 110])
.range([0, height/2 - margin]),
yScale = function (day, temp) {return -Math.cos(angleScale(day)*Math.PI/180)*rScale(parseInt(temp))},
xScale = function (day, temp) {return Math.sin(angleScale(day)*Math.PI/180)*rScale(parseInt(temp))},
angleScale = d3.scale.linear()
.range([0, 360]);
var drawRadial = function(chart, cl, data, low, high){
chart.selectAll('line.' + cl)
.data(data)
.enter().append('line')
.attr('x1', function (d) {return xScale(d.index, d[low])})
.attr('x2', function (d) {return xScale(d.index, d[high])})
.attr('y1', function (d) {return yScale(d.index, d[low])})
.attr('y2', function (d) {return yScale(d.index, d[high])})
.attr('class', cl);
};
d3.json('ny.json', function(err, json){
rawData = json;
angleScale.domain([0, json.values.length - 1]);
var min = d3.min(json.values, function (d) {return parseInt(d.recLow)}),
max = d3.max(json.values, function (d) {return parseInt(d.recHigh)});
var months = [];
//find index for months based on data
json.values.forEach(function (d, i) {
var month = d.date.split('-')[1],
prevDaysMonth = ( i === 0 ) ? undefined : json.values[i - 1].date.split('-')[1];
if (i === 0 || month != prevDaysMonth){
months.push({
month: month,
index: i
});
}
})
//circle axis
origin.selectAll('circle.axis-green')
.data([40, 60, 80, 100])
.enter().append('circle')
.attr('r', function (d) {return rScale(d)})
.attr('class', 'axis record')
//record low and high
drawRadial(origin, 'record', json.values, 'recLow', 'recHigh')
//avg low and high
drawRadial(origin, 'avg', json.values, 'avgLow', 'avgHigh')
//this year's temperature
var thisYear = json.values.filter(function (d) {return d.min });
drawRadial(origin, 'year', thisYear, 'min', 'max')
var lowLower = json.values.filter(function (d) {return d.min && parseInt(d.min) < parseInt(d.avgLow)});
drawRadial(origin, 'yearLow', lowLower, 'min', 'avgLow')
var highHigher = json.values.filter(function (d) {return d.min && parseInt(d.max) > parseInt(d.avgHigh)});
drawRadial(origin, 'yearHigh', highHigher, 'max', 'avgHigh')
var circleAxis = [0, 32, 60, 80, 100]
circleAxis = circleAxis.map( function (d) {return {temp: d, index: 320}})
//temperature axis
origin.selectAll('circle.axis-white')
.data(circleAxis)
.enter().append('circle')
.attr('r', function (d) {return rScale(d.temp)})
.attr('class', 'axis')
//temperature axis labels
origin.selectAll('text.temp')
.data(circleAxis)
.enter().append('text')
.attr('x', function (d) {
return xScale(d.index, d.temp)})
.attr('y', function (d) {return yScale(d.index, d.temp)})
.text(function (d) {return d.temp + '°'})
.attr('class', 'temp');
//axis lines
var axis = origin.append('g');
axis.selectAll('line.axis')
.data(months)
.enter().append('line')
.attr('x2', function (d) {
return xScale(d.index, 120)})
.attr('y2', function (d) {return -yScale(d.index, 120)})
.attr('class', 'axis');
var monthLabels = months.filter( function (d,i) {return i%3 === 0})
//month labels
axis.selectAll('text.months')
.data(monthLabels)
.enter().append('text')
.attr('x', function (d) {
return xScale(d.index, 110)})
.attr('y', function (d) {return yScale(d.index, 110)})
.text(function (d) {return d.month})
.attr('class', 'months');
//center for reference
axis.append('circle')
.attr('r', 3)
.attr('class', 'avg')
//title
svg.append('text')
.attr('x', 30)
.attr('y', 60)
.text(json.name)
.attr('class', 'title')
//subtitle
svg.append('text')
.attr('x', 30)
.attr('y', 100)
.text('Historical Weather Data')
//create legend
var legendScale = d3.scale.ordinal()
.domain(['Record', 'Average', 'This Year - within avg', 'This Year - beyond avg', 'Freezing', 'Precipitation', 'Scattered Clouds', "Cloudy", "Overcast"])
.range(['record', 'avg', 'beyond', 'year', 'freeze', 'rain', 'scattered', 'cloudy', 'overcast'])
//d3-legend
var legend = d3.legend.color()
.shapePadding(5)
.useClass(true)
.scale(legendScale);
svg.append('g')
.attr('transform', 'translate(30,120)')
.call(legend);
d3.json("cloud_rain_freeze.json", loadBars);
});
function loadBars(data) {
var freezeBars = [];
var rainBars = [];
var cloudBars = [];
var freeze = {};
var cloud = {start: data[0].date, category: data[0].cloud};
var rain = {};
data.forEach(function (d, i) {
if (d.cloud !== cloud.category) {
cloud.end = d.date;
cloudBars.push(cloud);
cloud = {start: d.date, category: d.cloud};
}
if (freeze.start && !d.freeze) {
freeze.end = d.date;
freezeBars.push(freeze);
freeze = {};
}
else if (d.freeze && !freeze.start) {
freeze.start = d.date;
}
if (rain.start && !d.rain) {
rain.end = d.date;
rainBars.push(rain);
rain = {};
}
else if (d.rain && !rain.start) {
rain.start = d.date;
}
});
drawBars(rainBars, "rain", 205);
drawBars(freezeBars, "freeze", 200);
drawBars(cloudBars, "freeze", 210);
}
function loadBars(data) {
freezeBars = [];
rainBars = [];
cloudBars = [];
var freeze = {};
var cloud = {start: data[0].date, category: data[0].cloud};
var rain = {};
var dateScale = d3.time.scale().domain([new Date("01/01/2015"), new Date("12/31/2015")]).range([1,366]);
data.forEach(function (d, i) {
if (d.cloud !== cloud.category) {
cloud.end = d.date;
cloud.endInt = dateScale(new Date(d.date));
cloudBars.push(cloud);
cloud = {start: d.date, startInt: dateScale(new Date(d.date)), category: d.cloud};
}
if (freeze.start && !d.freeze) {
freeze.end = d.date;
freeze.endInt = dateScale(new Date(d.date));
freezeBars.push(freeze);
freeze = {};
}
else if (d.freeze && !freeze.start) {
freeze.start = d.date;
freeze.startInt = dateScale(new Date(d.date));
}
if (rain.start && !d.rain) {
rain.end = d.date;
rain.endInt = dateScale(new Date(d.date));
rainBars.push(rain);
rain = {};
}
else if (d.rain && !rain.start) {
rain.start = d.date;
rain.startInt = dateScale(new Date(d.date));
}
});
drawBars(rainBars, "rain", 205);
drawBars(freezeBars, "freeze", 200);
drawBars(cloudBars, "cloud", 210);
drawBrush();
}
function drawBrush() {
brush = d3.svg.circularbrush()
.range([1,366])
.innerRadius(10)
.outerRadius(218)
.handleSize(0.1)
.on("brush", brush);
d3.select("svg")
.append("g")
.attr("class", "brush")
.attr("transform", "translate(576,250)")
.call(brush);
d3.select("svg").append("g")
.attr("class", "linear")
.attr("transform", "translate(40,350)")
function brush() {
extent = brush.extent();
var yScale = d3.scale.linear().domain([-10,110]).range([100,0]).clamp(true);
var xScale = d3.scale.linear().domain([1,366]).range([0,250]);
var start = extent[0];
var end = extent[1];
var barOffset = 0;
if (start < end) {
filteredData = rawData.values.filter(function (d) {
return d.index >= start && d.index <= end;
});
filteredRainbars = rainBars.filter(function (d) {
var sDate = d.startInt;
var eDate = d.endInt;
return (eDate <= end && eDate >= start) || (sDate <= end && sDate >= start)
})
filteredFreezebars = freezeBars.filter(function (d) {
var sDate = d.startInt;
var eDate = d.endInt;
return (eDate <= end && eDate >= start) || (sDate <= end && sDate >= start)
})
filteredCloudbars = cloudBars.filter(function (d) {
var sDate = d.startInt;
var eDate = d.endInt;
return (eDate <= end && eDate >= start) || (sDate <= end && sDate >= start)
})
}
else {
var janone = 1;
var decthirtyone = 366
var filteredDataEarly = rawData.values.filter(function (d) {
return (d.index >= start && d.index <= decthirtyone);
});
var filteredDataAfter = rawData.values.filter(function (d) {
return (d.index <= end && d.index >= janone);
});
barOffset = filteredDataEarly.length;
earlyMin = d3.min(filteredDataEarly, function (d) {return d.index})
filteredFreezebarsEarly = beforeBars(freezeBars)
filteredFreezebarsAfter = afterBars(freezeBars)
filteredRainbarsEarly = beforeBars(rainBars)
filteredRainbarsAfter = afterBars(rainBars)
filteredCloudbarsEarly = beforeBars(cloudBars);
filteredCloudbarsAfter = afterBars(cloudBars);
filteredData = filteredDataEarly.concat(filteredDataAfter);
filteredFreezebars = filteredFreezebarsEarly.concat(filteredFreezebarsAfter);
filteredRainbars = filteredRainbarsEarly.concat(filteredRainbarsAfter);
filteredCloudbars = filteredCloudbarsEarly.concat(filteredCloudbarsAfter);
function beforeBars(bars) {
return bars.filter(function (d) {
var sDate = d.startInt;
var eDate = d.endInt;
(d.index >= start && d.index <= decthirtyone)
return (eDate >= start && eDate <= decthirtyone) || (sDate >= start && sDate <= decthirtyone)
}).map(function (d) {
return {startInt: d.startInt - earlyMin, endInt: d.endInt - earlyMin, category: d.category}
})
}
function afterBars(bars) {
return bars.filter(function (d) {
var sDate = d.startInt;
var eDate = d.endInt;
(d.index >= start && d.index <= decthirtyone)
return (eDate <= end && eDate >= janone) || (sDate <= end && sDate >= janone)
}).map(function (d) {
return {startInt: d.startInt + barOffset, endInt: d.endInt + barOffset, category: d.category}
})
}
}
var lineWidth = 250 / filteredData.length;
minDate = d3.min(filteredData, function (d) {return d.index})
maxDate = d3.max(filteredData, function (d) {return d.index})
xScale.domain([0, filteredData.length]);
d3.select("g.linear")
.selectAll("g.linearBars")
.remove();
d3.select("g.linear")
.selectAll("rect")
.remove();
d3.select("g.linear")
.selectAll("text")
.remove();
d3.select("g.linear")
.selectAll("rect.rainbars")
.data(filteredRainbars)
.enter()
.append("rect")
.attr("class", "rain")
.attr("y", -10)
.attr("x", function (d) {return xScale((d.startInt - minDate)) })
.attr("width", function (d) {return Math.min(250 - xScale((d.startInt - minDate)), (d.endInt - d.startInt) * lineWidth) })
.attr("height", "5px")
d3.select("g.linear")
.selectAll("rect.freezebars")
.data(filteredFreezebars)
.enter()
.append("rect")
.attr("class", "freeze")
.attr("y", -0)
.attr("x", function (d) {return xScale((d.startInt - minDate)) })
.attr("width", function (d) {return Math.min(250 - xScale((d.startInt - minDate)), (d.endInt - d.startInt) * lineWidth) })
.attr("height", "5px")
d3.select("g.linear")
.selectAll("rect.cloudbars")
.data(filteredCloudbars)
.enter()
.append("rect")
.attr("class", function (d) {return d.category })
.attr("y", -20)
.attr("x", function (d) {return xScale((d.startInt - minDate)) })
.attr("width", function (d) {return Math.min(250 - xScale((d.startInt - minDate)), (d.endInt - d.startInt) * lineWidth) })
.attr("height", "5px")
d3.select("g.linear")
.selectAll("g.linearBars")
.data(filteredData, function (d) {return d.date})
.enter()
.insert("g", "rect")
.attr("class", "linearBars")
.each(function (d, i) {
if (i === 0 || i === filteredData.length - 1) {
d3.select(this).append("text")
.text(d.date)
.attr("y", -30)
.style("text-anchor", "middle");
}
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "highlightline")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "record")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "avg")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "yearLow")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "yearHigh")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "year")
d3.select(this).append("line").style("stroke-width", lineWidth).attr("class", "hoverline")
});
d3.selectAll("g.linearBars")
.attr("transform", function (d,i) {return "translate(" + xScale(i) +",0)" });
d3.selectAll("g.linearBars")
.each(function (d) {
var thisG = this;
d3.select(this).select("line.highlightline")
.attr("y1", -30)
.attr("y2", 100)
.style("stroke-width", 1)
.style("stroke", "black")
.style("opacity", 0);
d3.select(this).select("line.hoverline")
.attr("y1", -30)
.attr("y2", 100)
.style("stroke-width", lineWidth)
.style("opacity", 0.0)
.style("stroke", "black")
.on("mouseover", function () {
d3.select(thisG).select("line.highlightline").style("opacity", 1);
})
.on("mouseout", function () {
d3.selectAll("line.highlightline").style("opacity", 0);
})
d3.select(this).select("line.record")
.attr("y1", yScale(parseInt(d.recHigh)))
.attr("y2", yScale(parseInt(d.recLow)));
d3.select(this).select("line.avg")
.attr("y1", yScale(parseInt(d.avgHigh)))
.attr("y2", yScale(parseInt(d.avgLow)));
if (d.max != null) {
if (d.min < parseInt(d.avgLow)) {
d3.select(this).select("line.yearLow")
.attr("y1", yScale(parseInt(d.min)))
.attr("y2", yScale(parseInt(d.avgLow)));
}
if (d.max > parseInt(d.avgHigh)) {
d3.select(this).select("line.yearHigh")
.attr("y1", yScale(parseInt(d.max)))
.attr("y2", yScale(parseInt(d.avgHigh)));
}
if (!(d.min > parseInt(d.avgHigh) || d.max < parseInt(d.avgLow))) {
d3.select(this).select("line.year")
.attr("y1", yScale(Math.max(d.min,parseInt(d.avgLow))))
.attr("y2", yScale(Math.min(d.max,parseInt(d.avgHigh))));
}
}
})
}
}
function drawBars(data, type, offset) {
dateScale = d3.scale.linear()
.domain([1,366])
.range([0,(2 * Math.PI)]);
var arc = d3.svg.arc().innerRadius(offset).outerRadius(offset + 5);
d3.select("svg").append("g")
.attr("class", type + "bars")
.attr("transform", "translate(576,250)")
.selectAll("path")
.data(data)
.enter()
.append("path")
.attr("d", drawArc)
.attr("class", function (d) {return type + " " + d.category})
function drawArc(d) {
projected = {startAngle: dateScale(d.startInt), endAngle: dateScale(d.endInt) };
return arc(projected);
}
}
</script>
</body>
</html>
{ "name": "New York",
"values": [{"date":"1-Jan","avgLow":"24°","avgHigh":"38°","recLow":"10° (1963)","recHigh":"59° (1966)","index":0,"max":39,"min":27},
{"date":"2-Jan","avgLow":"24°","avgHigh":"38°","recLow":"6° (1968)","recHigh":"58° (1966)","index":1,"max":42,"min":35},
{"date":"3-Jan","avgLow":"24°","avgHigh":"37°","recLow":"3° (1981)","recHigh":"56° (1950)","index":2,"max":42,"min":33},
{"date":"4-Jan","avgLow":"24°","avgHigh":"37°","recLow":"1° (1981)","recHigh":"64° (1950)","index":3,"max":56,"min":41},
{"date":"5-Jan","avgLow":"24°","avgHigh":"37°","recLow":"1° (1981)","recHigh":"60° (1950)","index":4,"max":49,"min":21},
{"date":"6-Jan","avgLow":"24°","avgHigh":"37°","recLow":"3° (1988)","recHigh":"60° (1950)","index":5,"max":22,"min":19},
{"date":"7-Jan","avgLow":"23°","avgHigh":"37°","recLow":"5° (1996)","recHigh":"52° (1961)","index":6,"max":23,"min":9},
{"date":"8-Jan","avgLow":"23°","avgHigh":"37°","recLow":"0° (1981)","recHigh":"57° (1949)","index":7,"max":21,"min":8},
{"date":"9-Jan","avgLow":"23°","avgHigh":"36°","recLow":"0° (1968)","recHigh":"54° (1978)","index":8,"max":33,"min":19},
{"date":"10-Jan","avgLow":"23°","avgHigh":"36°","recLow":"0° (1981)","recHigh":"53° (1983)","index":9,"max":23,"min":16},
{"date":"11-Jan","avgLow":"23°","avgHigh":"36°","recLow":"0° (1981)","recHigh":"62° (1975)","index":10,"max":37,"min":18},
{"date":"12-Jan","avgLow":"23°","avgHigh":"36°","recLow":"1° (1981)","recHigh":"61° (1975)","index":11,"max":39,"min":35},
{"date":"13-Jan","avgLow":"23°","avgHigh":"36°","recLow":"3° (1981)","recHigh":"55° (1972)","index":12,"max":36,"min":17},
{"date":"14-Jan","avgLow":"23°","avgHigh":"36°","recLow":"5° (1988)","recHigh":"60° (1995)","index":13,"max":32,"min":16},
{"date":"15-Jan","avgLow":"23°","avgHigh":"36°","recLow":"0° (1957)","recHigh":"62° (1995)","index":14,"max":35,"min":25},
{"date":"16-Jan","avgLow":"23°","avgHigh":"36°","recLow":"1° (1994)","recHigh":"59° (1995)","index":15,"max":43,"min":20},
{"date":"17-Jan","avgLow":"22°","avgHigh":"36°","recLow":"0° (1977)","recHigh":"59° (1973)","index":16,"max":32,"min":17},
{"date":"18-Jan","avgLow":"22°","avgHigh":"36°","recLow":"0° (1982)","recHigh":"60° (1986)","index":17,"max":42,"min":31},
{"date":"19-Jan","avgLow":"22°","avgHigh":"36°","recLow":"1° (1979)","recHigh":"60° (1951)","index":18,"max":42,"min":36},
{"date":"20-Jan","avgLow":"22°","avgHigh":"36°","recLow":"-4° (1994)","recHigh":"55° (1996)","index":19,"max":40,"min":32},
{"date":"21-Jan","avgLow":"22°","avgHigh":"36°","recLow":"2° (1984)","recHigh":"53° (1951)","index":20,"max":36,"min":25},
{"date":"22-Jan","avgLow":"22°","avgHigh":"36°","recLow":"2° (1985)","recHigh":"57° (1958)","index":21,"max":40,"min":31},
{"date":"23-Jan","avgLow":"22°","avgHigh":"36°","recLow":"1° (1976)","recHigh":"60° (1967)","index":22,"max":39,"min":28},
{"date":"24-Jan","avgLow":"22°","avgHigh":"36°","recLow":"4° (1963)","recHigh":"68° (1967)","index":23,"max":39,"min":33},
{"date":"25-Jan","avgLow":"22°","avgHigh":"36°","recLow":"4° (1961)","recHigh":"56° (1967)","index":24,"max":42,"min":31},
{"date":"26-Jan","avgLow":"22°","avgHigh":"36°","recLow":"8° (1961)","recHigh":"70° (1950)","index":25,"max":31,"min":22},
{"date":"27-Jan","avgLow":"22°","avgHigh":"36°","recLow":"4° (1994)","recHigh":"65° (1974)","index":26,"max":30,"min":20},
{"date":"28-Jan","avgLow":"22°","avgHigh":"36°","recLow":"4° (1994)","recHigh":"56° (1974)","index":27,"max":34,"min":16},
{"date":"29-Jan","avgLow":"22°","avgHigh":"36°","recLow":"1° (1977)","recHigh":"55° (1975)","index":28,"max":36,"min":19},
{"date":"30-Jan","avgLow":"22°","avgHigh":"37°","recLow":"7° (1952)","recHigh":"57° (1974)","index":29,"max":38,"min":19},
{"date":"31-Jan","avgLow":"22°","avgHigh":"37°","recLow":"6° (1981)","recHigh":"58° (1974)","index":30,"max":26,"min":13},
{"date":"1-Feb","avgLow":"22°","avgHigh":"37°","recLow":"4° (1980)","recHigh":"62° (1989)","index":31,"max":36,"min":20},
{"date":"2-Feb","avgLow":"22°","avgHigh":"37°","recLow":"-2° (1961)","recHigh":"58° (1973)","index":32,"max":34,"min":14},
{"date":"3-Feb","avgLow":"22°","avgHigh":"37°","recLow":"1° (1955)","recHigh":"56° (1983)","index":33,"max":26,"min":13},
{"date":"4-Feb","avgLow":"22°","avgHigh":"37°","recLow":"4° (1981)","recHigh":"50° (1984)","index":34,"max":43,"min":24},
{"date":"5-Feb","avgLow":"22°","avgHigh":"38°","recLow":"2° (1981)","recHigh":"52° (1964)","index":35,"max":42,"min":14},
{"date":"6-Feb","avgLow":"23°","avgHigh":"38°","recLow":"3° (1996)","recHigh":"53° (1960)","index":36,"max":27,"min":12},
{"date":"7-Feb","avgLow":"23°","avgHigh":"38°","recLow":"5° (1995)","recHigh":"50° (1953)","index":37,"max":40,"min":25},
{"date":"8-Feb","avgLow":"23°","avgHigh":"38°","recLow":"2° (1963)","recHigh":"61° (1965)","index":38,"max":37,"min":29},
{"date":"9-Feb","avgLow":"23°","avgHigh":"38°","recLow":"4° (1979)","recHigh":"58° (1949)","index":39,"max":29,"min":25},
{"date":"10-Feb","avgLow":"23°","avgHigh":"38°","recLow":"0° (1979)","recHigh":"55° (1955)","index":40,"max":40,"min":26},
{"date":"11-Feb","avgLow":"23°","avgHigh":"39°","recLow":"-3° (1979)","recHigh":"63° (1960)","index":41,"max":34,"min":22},
{"date":"12-Feb","avgLow":"23°","avgHigh":"39°","recLow":"0° (1979)","recHigh":"54° (1966)","index":42,"max":40,"min":16},
{"date":"13-Feb","avgLow":"23°","avgHigh":"39°","recLow":"0° (1979)","recHigh":"60° (1951)","index":43,"max":21,"min":8},
{"date":"14-Feb","avgLow":"24°","avgHigh":"39°","recLow":"0° (1979)","recHigh":"55° (1949)","index":44,"max":32,"min":16},
{"date":"15-Feb","avgLow":"24°","avgHigh":"39°","recLow":"0° (1987)","recHigh":"71° (1949)","index":45,"max":25,"min":4},
{"date":"16-Feb","avgLow":"24°","avgHigh":"40°","recLow":"2° (1987)","recHigh":"66° (1954)","index":46,"max":21,"min":3},
{"date":"17-Feb","avgLow":"24°","avgHigh":"40°","recLow":"-3° (1979)","recHigh":"62° (1976)","index":47,"max":27,"min":14},
{"date":"18-Feb","avgLow":"24°","avgHigh":"40°","recLow":"-1° (1979)","recHigh":"55° (1954)","index":48,"max":33,"min":19},
{"date":"19-Feb","avgLow":"25°","avgHigh":"40°","recLow":"10° (1959)","recHigh":"58° (1961)","index":49,"max":27,"min":8},
{"date":"20-Feb","avgLow":"25°","avgHigh":"41°","recLow":"5° (1950)","recHigh":"65° (1997)","index":50,"max":19,"min":2},
{"date":"21-Feb","avgLow":"25°","avgHigh":"41°","recLow":"5° (1950)","recHigh":"60° (1953)","index":51,"max":32,"min":13},
{"date":"22-Feb","avgLow":"25°","avgHigh":"41°","recLow":"8° (1963)","recHigh":"64° (1997)","index":52,"max":43,"min":32},
{"date":"23-Feb","avgLow":"26°","avgHigh":"41°","recLow":"10° (1963)","recHigh":"71° (1997)","index":53,"max":38,"min":8},
{"date":"24-Feb","avgLow":"26°","avgHigh":"42°","recLow":"16° (1968)","recHigh":"72° (1985)","index":54,"max":24,"min":4},
{"date":"25-Feb","avgLow":"26°","avgHigh":"42°","recLow":"13° (1989)","recHigh":"65° (1976)","index":55,"max":37,"min":20},
{"date":"26-Feb","avgLow":"26°","avgHigh":"42°","recLow":"10° (1970)","recHigh":"63° (1996)","index":56,"max":32,"min":21},
{"date":"27-Feb","avgLow":"27°","avgHigh":"42°","recLow":"9° (1950)","recHigh":"65° (1976)","index":57,"max":30,"min":18},
{"date":"28-Feb","avgLow":"27°","avgHigh":"43°","recLow":"11° (1994)","recHigh":"72° (1997)","index":58,"max":29,"min":13},
{"date":"29-Feb","avgLow":"27°","avgHigh":"43°","recLow":"7° (1980)","recHigh":"65° (1976)","index":59,"max":null,"min":null},
{"date":"1-Mar","avgLow":"27°","avgHigh":"43°","recLow":"5° (1980)","recHigh":"70° (1972)","index":60,"max":31,"min":24},
{"date":"2-Mar","avgLow":"27°","avgHigh":"43°","recLow":"10° (1962)","recHigh":"75° (1972)","index":61,"max":39,"min":27},
{"date":"3-Mar","avgLow":"28°","avgHigh":"44°","recLow":"10° (1950)","recHigh":"61° (1997)","index":62,"max":37,"min":22},
{"date":"4-Mar","avgLow":"28°","avgHigh":"44°","recLow":"11° (1950)","recHigh":"63° (1974)","index":63,"max":45,"min":35},
{"date":"5-Mar","avgLow":"28°","avgHigh":"44°","recLow":"12° (1978)","recHigh":"72° (1964)","index":64,"max":40,"min":19},
{"date":"6-Mar","avgLow":"29°","avgHigh":"44°","recLow":"16° (1978)","recHigh":"61° (1996)","index":65,"max":27,"min":12},
{"date":"7-Mar","avgLow":"29°","avgHigh":"45°","recLow":"9° (1986)","recHigh":"67° (1974)","index":66,"max":38,"min":18},
{"date":"8-Mar","avgLow":"29°","avgHigh":"45°","recLow":"9° (1986)","recHigh":"72° (1987)","index":67,"max":49,"min":37},
{"date":"9-Mar","avgLow":"30°","avgHigh":"45°","recLow":"10° (1996)","recHigh":"62° (1955)","index":68,"max":54,"min":40},
{"date":"10-Mar","avgLow":"30°","avgHigh":"46°","recLow":"10° (1984)","recHigh":"68° (1955)","index":69,"max":53,"min":39},
{"date":"11-Mar","avgLow":"30°","avgHigh":"46°","recLow":"12° (1960)","recHigh":"64° (1955)","index":70,"max":59,"min":44},
{"date":"12-Mar","avgLow":"31°","avgHigh":"46°","recLow":"12° (1984)","recHigh":"62° (1973)","index":71,"max":47,"min":36},
{"date":"13-Mar","avgLow":"31°","avgHigh":"47°","recLow":"19° (1960)","recHigh":"65° (1957)","index":72,"max":43,"min":31},
{"date":"14-Mar","avgLow":"31°","avgHigh":"47°","recLow":"19° (1981)","recHigh":"69° (1995)","index":73,"max":51,"min":40},
{"date":"15-Mar","avgLow":"32°","avgHigh":"47°","recLow":"17° (1979)","recHigh":"64° (1983)","index":74,"max":44,"min":36},
{"date":"16-Mar","avgLow":"32°","avgHigh":"48°","recLow":"15° (1981)","recHigh":"67° (1995)","index":75,"max":52,"min":35},
{"date":"17-Mar","avgLow":"32°","avgHigh":"48°","recLow":"13° (1981)","recHigh":"65° (1995)","index":76,"max":57,"min":34},
{"date":"18-Mar","avgLow":"33°","avgHigh":"48°","recLow":"5° (1981)","recHigh":"69° (1969)","index":77,"max":39,"min":29},
{"date":"19-Mar","avgLow":"33°","avgHigh":"48°","recLow":"16° (1949)","recHigh":"68° (1986)","index":78,"max":43,"min":29},
{"date":"20-Mar","avgLow":"33°","avgHigh":"49°","recLow":"15° (1981)","recHigh":"70° (1959)","index":79,"max":38,"min":29},
{"date":"21-Mar","avgLow":"34°","avgHigh":"49°","recLow":"12° (1986)","recHigh":"67° (1976)","index":80,"max":47,"min":29},
{"date":"22-Mar","avgLow":"34°","avgHigh":"49°","recLow":"14° (1988)","recHigh":"64° (1979)","index":81,"max":43,"min":28},
{"date":"23-Mar","avgLow":"34°","avgHigh":"50°","recLow":"19° (1959)","recHigh":"65° (1949)","index":82,"max":38,"min":23},
{"date":"24-Mar","avgLow":"35°","avgHigh":"50°","recLow":"23° (1956)","recHigh":"74° (1988)","index":83,"max":45,"min":26},
{"date":"25-Mar","avgLow":"35°","avgHigh":"50°","recLow":"18° (1956)","recHigh":"77° (1963)","index":84,"max":49,"min":34},
{"date":"26-Mar","avgLow":"35°","avgHigh":"51°","recLow":"20° (1960)","recHigh":"70° (1986)","index":85,"max":62,"min":42},
{"date":"27-Mar","avgLow":"36°","avgHigh":"51°","recLow":"24° (1966)","recHigh":"74° (1949)","index":86,"max":46,"min":39},
{"date":"28-Mar","avgLow":"36°","avgHigh":"52°","recLow":"20° (1982)","recHigh":"78° (1989)","index":87,"max":40,"min":26},
{"date":"29-Mar","avgLow":"36°","avgHigh":"52°","recLow":"25° (1959)","recHigh":"80° (1985)","index":88,"max":46,"min":25},
{"date":"30-Mar","avgLow":"37°","avgHigh":"52°","recLow":"22° (1970)","recHigh":"76° (1962)","index":89,"max":54,"min":36},
{"date":"31-Mar","avgLow":"37°","avgHigh":"53°","recLow":"20° (1964)","recHigh":"70° (1986)","index":90,"max":47,"min":35},
{"date":"1-Apr","avgLow":"37°","avgHigh":"53°","recLow":"26° (1964)","recHigh":"76° (1978)","index":91,"max":51,"min":32},
{"date":"2-Apr","avgLow":"38°","avgHigh":"53°","recLow":"29° (1965)","recHigh":"74° (1955)","index":92,"max":67,"min":41},
{"date":"3-Apr","avgLow":"38°","avgHigh":"54°","recLow":"22° (1954)","recHigh":"70° (1964)","index":93,"max":64,"min":59},
{"date":"4-Apr","avgLow":"38°","avgHigh":"54°","recLow":"23° (1954)","recHigh":"77° (1950)","index":94,"max":60,"min":42},
{"date":"5-Apr","avgLow":"39°","avgHigh":"54°","recLow":"22° (1995)","recHigh":"74° (1989)","index":95,"max":61,"min":42},
{"date":"6-Apr","avgLow":"39°","avgHigh":"55°","recLow":"21° (1982)","recHigh":"70° (1974)","index":96,"max":63,"min":42},
{"date":"7-Apr","avgLow":"39°","avgHigh":"55°","recLow":"18° (1982)","recHigh":"72° (1954)","index":97,"max":62,"min":42},
{"date":"8-Apr","avgLow":"40°","avgHigh":"55°","recLow":"21° (1982)","recHigh":"81° (1959)","index":98,"max":45,"min":37},
{"date":"9-Apr","avgLow":"40°","avgHigh":"56°","recLow":"25° (1977)","recHigh":"75° (1970)","index":99,"max":43,"min":37},
{"date":"10-Apr","avgLow":"40°","avgHigh":"56°","recLow":"26° (1985)","recHigh":"79° (1955)","index":100,"max":56,"min":39},
{"date":"11-Apr","avgLow":"41°","avgHigh":"56°","recLow":"27° (1997)","recHigh":"80° (1955)","index":101,"max":57,"min":44},
{"date":"12-Apr","avgLow":"41°","avgHigh":"57°","recLow":"26° (1976)","recHigh":"87° (1977)","index":102,"max":66,"min":43},
{"date":"13-Apr","avgLow":"41°","avgHigh":"57°","recLow":"28° (1950)","recHigh":"83° (1977)","index":103,"max":68,"min":50},
{"date":"14-Apr","avgLow":"42°","avgHigh":"57°","recLow":"21° (1950)","recHigh":"74° (1949)","index":104,"max":65,"min":55},
{"date":"15-Apr","avgLow":"42°","avgHigh":"58°","recLow":"27° (1981)","recHigh":"83° (1949)","index":105,"max":72,"min":51},
{"date":"16-Apr","avgLow":"42°","avgHigh":"58°","recLow":"26° (1981)","recHigh":"80° (1976)","index":106,"max":64,"min":52},
{"date":"17-Apr","avgLow":"43°","avgHigh":"59°","recLow":"28° (1980)","recHigh":"83° (1976)","index":107,"max":71,"min":55},
{"date":"18-Apr","avgLow":"43°","avgHigh":"59°","recLow":"36° (1983)","recHigh":"83° (1964)","index":108,"max":80,"min":59},
{"date":"19-Apr","avgLow":"43°","avgHigh":"59°","recLow":"31° (1979)","recHigh":"86° (1985)","index":109,"max":64,"min":48},
{"date":"20-Apr","avgLow":"44°","avgHigh":"60°","recLow":"33° (1981)","recHigh":"82° (1994)","index":110,"max":57,"min":46},
{"date":"21-Apr","avgLow":"44°","avgHigh":"60°","recLow":"20° (1981)","recHigh":"82° (1957)","index":111,"max":65,"min":52},
{"date":"22-Apr","avgLow":"44°","avgHigh":"60°","recLow":"27° (1981)","recHigh":"83° (1973)","index":112,"max":69,"min":48},
{"date":"23-Apr","avgLow":"45°","avgHigh":"61°","recLow":"30° (1989)","recHigh":"81° (1973)","index":113,"max":52,"min":41},
{"date":"24-Apr","avgLow":"45°","avgHigh":"61°","recLow":"38° (1956)","recHigh":"85° (1996)","index":114,"max":52,"min":39},
{"date":"25-Apr","avgLow":"45°","avgHigh":"61°","recLow":"33° (1981)","recHigh":"87° (1960)","index":115,"max":62,"min":38},
{"date":"26-Apr","avgLow":"46°","avgHigh":"62°","recLow":"33° (1981)","recHigh":"80° (1985)","index":116,"max":64,"min":46},
{"date":"27-Apr","avgLow":"46°","avgHigh":"62°","recLow":"32° (1956)","recHigh":"86° (1962)","index":117,"max":62,"min":49},
{"date":"28-Apr","avgLow":"47°","avgHigh":"62°","recLow":"38° (1966)","recHigh":"82° (1956)","index":118,"max":71,"min":50},
{"date":"29-Apr","avgLow":"47°","avgHigh":"63°","recLow":"37° (1966)","recHigh":"86° (1974)","index":119,"max":78,"min":50},
{"date":"30-Apr","avgLow":"47°","avgHigh":"63°","recLow":"40° (1949)","recHigh":"79° (1974)","index":120,"max":67,"min":48},
{"date":"1-May","avgLow":"48°","avgHigh":"63°","recLow":"36° (1963)","recHigh":"83° (1957)","index":121,"max":63,"min":49},
{"date":"2-May","avgLow":"48°","avgHigh":"64°","recLow":"34° (1963)","recHigh":"80° (1951)","index":122,"max":74,"min":48},
{"date":"3-May","avgLow":"48°","avgHigh":"64°","recLow":"38° (1957)","recHigh":"82° (1969)","index":123,"max":80,"min":51},
{"date":"4-May","avgLow":"49°","avgHigh":"64°","recLow":"38° (1986)","recHigh":"87° (1965)","index":124,"max":85,"min":57},
{"date":"5-May","avgLow":"49°","avgHigh":"65°","recLow":"40° (1956)","recHigh":"86° (1949)","index":125,"max":85,"min":66},
{"date":"6-May","avgLow":"49°","avgHigh":"65°","recLow":"41° (1970)","recHigh":"88° (1986)","index":126,"max":73,"min":59},
{"date":"7-May","avgLow":"50°","avgHigh":"66°","recLow":"36° (1981)","recHigh":"78° (1949)","index":127,"max":80,"min":56},
{"date":"8-May","avgLow":"50°","avgHigh":"66°","recLow":"36° (1956)","recHigh":"87° (1964)","index":128,"max":82,"min":56},
{"date":"9-May","avgLow":"50°","avgHigh":"66°","recLow":"36° (1977)","recHigh":"88° (1970)","index":129,"max":70,"min":57},
{"date":"10-May","avgLow":"51°","avgHigh":"67°","recLow":"34° (1966)","recHigh":"89° (1970)","index":130,"max":83,"min":61},
{"date":"11-May","avgLow":"51°","avgHigh":"67°","recLow":"40° (1966)","recHigh":"85° (1965)","index":131,"max":84,"min":70},
{"date":"12-May","avgLow":"51°","avgHigh":"67°","recLow":"39° (1963)","recHigh":"85° (1959)","index":132,"max":86,"min":64},
{"date":"13-May","avgLow":"52°","avgHigh":"67°","recLow":"38° (1981)","recHigh":"88° (1956)","index":133,"max":70,"min":53},
{"date":"14-May","avgLow":"52°","avgHigh":"68°","recLow":"41° (1996)","recHigh":"81° (1985)","index":134,"max":73,"min":50},
{"date":"15-May","avgLow":"52°","avgHigh":"68°","recLow":"41° (1996)","recHigh":"83° (1951)","index":135,"max":75,"min":55},
{"date":"16-May","avgLow":"53°","avgHigh":"68°","recLow":"40° (1983)","recHigh":"87° (1951)","index":136,"max":75,"min":57},
{"date":"17-May","avgLow":"53°","avgHigh":"69°","recLow":"38° (1956)","recHigh":"90° (1974)","index":137,"max":83,"min":64},
{"date":"18-May","avgLow":"53°","avgHigh":"69°","recLow":"38° (1981)","recHigh":"88° (1977)","index":138,"max":75,"min":60},
{"date":"19-May","avgLow":"54°","avgHigh":"69°","recLow":"38° (1976)","recHigh":"95° (1962)","index":139,"max":80,"min":59},
{"date":"20-May","avgLow":"54°","avgHigh":"70°","recLow":"41° (1981)","recHigh":"88° (1975)","index":140,"max":67,"min":54},
{"date":"21-May","avgLow":"55°","avgHigh":"70°","recLow":"41° (1949)","recHigh":"96° (1996)","index":141,"max":62,"min":52},
{"date":"22-May","avgLow":"55°","avgHigh":"70°","recLow":"47° (1950)","recHigh":"94° (1996)","index":142,"max":74,"min":55},
{"date":"23-May","avgLow":"55°","avgHigh":"71°","recLow":"44° (1981)","recHigh":"93° (1964)","index":143,"max":70,"min":49},
{"date":"24-May","avgLow":"56°","avgHigh":"71°","recLow":"41° (1963)","recHigh":"92° (1964)","index":144,"max":81,"min":56},
{"date":"25-May","avgLow":"56°","avgHigh":"71°","recLow":"40° (1956)","recHigh":"89° (1994)","index":145,"max":85,"min":64},
{"date":"26-May","avgLow":"56°","avgHigh":"72°","recLow":"44° (1972)","recHigh":"92° (1965)","index":146,"max":88,"min":67},
{"date":"27-May","avgLow":"57°","avgHigh":"72°","recLow":"41° (1961)","recHigh":"86° (1985)","index":147,"max":85,"min":70},
{"date":"28-May","avgLow":"57°","avgHigh":"72°","recLow":"39° (1961)","recHigh":"88° (1977)","index":148,"max":85,"min":70},
{"date":"29-May","avgLow":"57°","avgHigh":"73°","recLow":"46° (1953)","recHigh":"97° (1969)","index":149,"max":85,"min":65},
{"date":"30-May","avgLow":"58°","avgHigh":"73°","recLow":"44° (1949)","recHigh":"92° (1986)","index":150,"max":85,"min":67},
{"date":"31-May","avgLow":"58°","avgHigh":"73°","recLow":"48° (1961)","recHigh":"89° (1986)","index":151,"max":87,"min":57},
{"date":"1-Jun","avgLow":"58°","avgHigh":"73°","recLow":"46° (1984)","recHigh":"92° (1989)","index":152,"max":58,"min":51},
{"date":"2-Jun","avgLow":"59°","avgHigh":"74°","recLow":"49° (1981)","recHigh":"91° (1989)","index":153,"max":55,"min":50},
{"date":"3-Jun","avgLow":"59°","avgHigh":"74°","recLow":"46° (1986)","recHigh":"83° (1989)","index":154,"max":70,"min":52},
{"date":"4-Jun","avgLow":"59°","avgHigh":"74°","recLow":"48° (1988)","recHigh":"88° (1971)","index":155,"max":65,"min":54},
{"date":"5-Jun","avgLow":"60°","avgHigh":"75°","recLow":"50° (1964)","recHigh":"91° (1966)","index":156,"max":70,"min":55},
{"date":"6-Jun","avgLow":"60°","avgHigh":"75°","recLow":"50° (1958)","recHigh":"90° (1953)","index":157,"max":76,"min":60},
{"date":"7-Jun","avgLow":"60°","avgHigh":"75°","recLow":"46° (1958)","recHigh":"90° (1971)","index":158,"max":74,"min":55},
{"date":"8-Jun","avgLow":"60°","avgHigh":"75°","recLow":"48° (1981)","recHigh":"92° (1984)","index":159,"max":79,"min":63},
{"date":"9-Jun","avgLow":"61°","avgHigh":"76°","recLow":"44° (1980)","recHigh":"96° (1984)","index":160,"max":83,"min":68},
{"date":"10-Jun","avgLow":"61°","avgHigh":"76°","recLow":"49° (1957)","recHigh":"94° (1974)","index":161,"max":82,"min":65},
{"date":"11-Jun","avgLow":"61°","avgHigh":"76°","recLow":"44° (1972)","recHigh":"94° (1973)","index":162,"max":89,"min":72},
{"date":"12-Jun","avgLow":"62°","avgHigh":"76°","recLow":"44° (1979)","recHigh":"93° (1973)","index":163,"max":88,"min":73},
{"date":"13-Jun","avgLow":"62°","avgHigh":"77°","recLow":"50° (1979)","recHigh":"94° (1983)","index":164,"max":86,"min":72},
{"date":"14-Jun","avgLow":"62°","avgHigh":"77°","recLow":"49° (1978)","recHigh":"97° (1956)","index":165,"max":88,"min":66},
{"date":"15-Jun","avgLow":"63°","avgHigh":"77°","recLow":"51° (1951)","recHigh":"95° (1956)","index":166,"max":83,"min":64},
{"date":"16-Jun","avgLow":"63°","avgHigh":"77°","recLow":"50° (1961)","recHigh":"96° (1994)","index":167,"max":79,"min":65},
{"date":"17-Jun","avgLow":"63°","avgHigh":"78°","recLow":"50° (1959)","recHigh":"93° (1952)","index":168,"max":82,"min":66},
{"date":"18-Jun","avgLow":"63°","avgHigh":"78°","recLow":"46° (1950)","recHigh":"91° (1962)","index":169,"max":71,"min":64},
{"date":"19-Jun","avgLow":"64°","avgHigh":"78°","recLow":"52° (1956)","recHigh":"91° (1994)","index":170,"max":87,"min":68},
{"date":"20-Jun","avgLow":"64°","avgHigh":"78°","recLow":"49° (1959)","recHigh":"96° (1994)","index":171,"max":75,"min":64},
{"date":"21-Jun","avgLow":"64°","avgHigh":"79°","recLow":"55° (1980)","recHigh":"92° (1949)","index":172,"max":88,"min":71},
{"date":"22-Jun","avgLow":"64°","avgHigh":"79°","recLow":"53° (1963)","recHigh":"92° (1988)","index":173,"max":87,"min":70},
{"date":"23-Jun","avgLow":"65°","avgHigh":"79°","recLow":"54° (1958)","recHigh":"91° (1965)","index":174,"max":90,"min":75},
{"date":"24-Jun","avgLow":"65°","avgHigh":"79°","recLow":"53° (1979)","recHigh":"95° (1975)","index":175,"max":84,"min":68},
{"date":"25-Jun","avgLow":"65°","avgHigh":"80°","recLow":"48° (1979)","recHigh":"96° (1952)","index":176,"max":83,"min":65},
{"date":"26-Jun","avgLow":"65°","avgHigh":"80°","recLow":"46° (1981)","recHigh":"100° (1952)","index":177,"max":81,"min":69},
{"date":"27-Jun","avgLow":"65°","avgHigh":"80°","recLow":"50° (1985)","recHigh":"98° (1966)","index":178,"max":71,"min":58},
{"date":"28-Jun","avgLow":"66°","avgHigh":"80°","recLow":"50° (1985)","recHigh":"95° (1969)","index":179,"max":73,"min":62},
{"date":"29-Jun","avgLow":"66°","avgHigh":"80°","recLow":"57° (1979)","recHigh":"96° (1959)","index":180,"max":76,"min":63},
{"date":"30-Jun","avgLow":"66°","avgHigh":"81°","recLow":"56° (1988)","recHigh":"97° (1964)","index":181,"max":82,"min":68},
{"date":"1-Jul","avgLow":"66°","avgHigh":"81°","recLow":"54° (1988)","recHigh":"97° (1963)","index":182,"max":82,"min":69},
{"date":"2-Jul","avgLow":"66°","avgHigh":"81°","recLow":"56° (1988)","recHigh":"98° (1966)","index":183,"max":80,"min":69},
{"date":"3-Jul","avgLow":"67°","avgHigh":"81°","recLow":"56° (1957)","recHigh":"102° (1966)","index":184,"max":82,"min":66},
{"date":"4-Jul","avgLow":"67°","avgHigh":"81°","recLow":"53° (1979)","recHigh":"98° (1966)","index":185,"max":75,"min":69},
{"date":"5-Jul","avgLow":"67°","avgHigh":"82°","recLow":"49° (1979)","recHigh":"97° (1955)","index":186,"max":83,"min":68},
{"date":"6-Jul","avgLow":"67°","avgHigh":"82°","recLow":"49° (1979)","recHigh":"94° (1986)","index":187,"max":83,"min":72},
{"date":"7-Jul","avgLow":"67°","avgHigh":"82°","recLow":"53° (1979)","recHigh":"96° (1986)","index":188,"max":88,"min":75},
{"date":"8-Jul","avgLow":"67°","avgHigh":"82°","recLow":"57° (1979)","recHigh":"95° (1971)","index":189,"max":88,"min":77},
{"date":"9-Jul","avgLow":"68°","avgHigh":"82°","recLow":"54° (1963)","recHigh":"97° (1974)","index":190,"max":79,"min":68},
{"date":"10-Jul","avgLow":"68°","avgHigh":"82°","recLow":"50° (1953)","recHigh":"94° (1974)","index":191,"max":84,"min":72},
{"date":"11-Jul","avgLow":"68°","avgHigh":"82°","recLow":"59° (1957)","recHigh":"94° (1987)","index":192,"max":88,"min":69},
{"date":"12-Jul","avgLow":"68°","avgHigh":"83°","recLow":"55° (1978)","recHigh":"96° (1966)","index":193,"max":89,"min":72},
{"date":"13-Jul","avgLow":"68°","avgHigh":"83°","recLow":"57° (1980)","recHigh":"97° (1966)","index":194,"max":88,"min":73},
{"date":"14-Jul","avgLow":"68°","avgHigh":"83°","recLow":"61° (1960)","recHigh":"98° (1954)","index":195,"max":82,"min":73},
{"date":"15-Jul","avgLow":"68°","avgHigh":"83°","recLow":"58° (1950)","recHigh":"98° (1983)","index":196,"max":81,"min":72},
{"date":"16-Jul","avgLow":"68°","avgHigh":"83°","recLow":"59° (1957)","recHigh":"97° (1983)","index":197,"max":80,"min":64},
{"date":"17-Jul","avgLow":"68°","avgHigh":"83°","recLow":"58° (1954)","recHigh":"97° (1955)","index":198,"max":81,"min":67},
{"date":"18-Jul","avgLow":"68°","avgHigh":"83°","recLow":"61° (1956)","recHigh":"95° (1983)","index":199,"max":85,"min":71},
{"date":"19-Jul","avgLow":"68°","avgHigh":"83°","recLow":"60° (1954)","recHigh":"96° (1977)","index":200,"max":93,"min":78},
{"date":"20-Jul","avgLow":"69°","avgHigh":"83°","recLow":"57° (1951)","recHigh":"97° (1957)","index":201,"max":94,"min":82},
{"date":"21-Jul","avgLow":"69°","avgHigh":"83°","recLow":"58° (1950)","recHigh":"97° (1977)","index":202,"max":89,"min":74},
{"date":"22-Jul","avgLow":"69°","avgHigh":"83°","recLow":"57° (1956)","recHigh":"100° (1957)","index":203,"max":85,"min":69},
{"date":"23-Jul","avgLow":"69°","avgHigh":"83°","recLow":"62° (1950)","recHigh":"97° (1955)","index":204,"max":86,"min":68},
{"date":"24-Jul","avgLow":"69°","avgHigh":"83°","recLow":"58° (1950)","recHigh":"92° (1972)","index":205,"max":87,"min":70},
{"date":"25-Jul","avgLow":"69°","avgHigh":"83°","recLow":"57° (1953)","recHigh":"95° (1987)","index":206,"max":88,"min":69},
{"date":"26-Jul","avgLow":"69°","avgHigh":"83°","recLow":"60° (1953)","recHigh":"96° (1989)","index":207,"max":90,"min":74},
{"date":"27-Jul","avgLow":"69°","avgHigh":"83°","recLow":"55° (1977)","recHigh":"96° (1963)","index":208,"max":86,"min":71},
{"date":"28-Jul","avgLow":"69°","avgHigh":"83°","recLow":"59° (1977)","recHigh":"95° (1949)","index":209,"max":95,"min":75},
{"date":"29-Jul","avgLow":"69°","avgHigh":"83°","recLow":"60° (1984)","recHigh":"96° (1949)","index":210,"max":96,"min":78},
{"date":"30-Jul","avgLow":"68°","avgHigh":"83°","recLow":"60° (1956)","recHigh":"96° (1988)","index":211,"max":87,"min":76},
{"date":"31-Jul","avgLow":"68°","avgHigh":"83°","recLow":"57° (1956)","recHigh":"98° (1954)","index":212,"max":89,"min":72},
{"date":"1-Aug","avgLow":"68°","avgHigh":"83°","recLow":"59° (1978)","recHigh":"99° (1955)","index":213,"max":89,"min":75},
{"date":"2-Aug","avgLow":"68°","avgHigh":"83°","recLow":"59° (1951)","recHigh":"100° (1955)","index":214,"max":89,"min":71},
{"date":"3-Aug","avgLow":"68°","avgHigh":"83°","recLow":"54° (1959)","recHigh":"97° (1975)","index":215,"max":90,"min":75},
{"date":"4-Aug","avgLow":"68°","avgHigh":"83°","recLow":"57° (1964)","recHigh":"94° (1955)","index":216,"max":89,"min":69},
{"date":"5-Aug","avgLow":"68°","avgHigh":"83°","recLow":"56° (1951)","recHigh":"96° (1995)","index":217,"max":87,"min":72},
{"date":"6-Aug","avgLow":"68°","avgHigh":"82°","recLow":"54° (1957)","recHigh":"92° (1989)","index":218,"max":83,"min":67},
{"date":"7-Aug","avgLow":"68°","avgHigh":"82°","recLow":"57° (1957)","recHigh":"92° (1955)","index":219,"max":84,"min":69},
{"date":"8-Aug","avgLow":"68°","avgHigh":"82°","recLow":"54° (1989)","recHigh":"91° (1949)","index":220,"max":82,"min":68},
{"date":"9-Aug","avgLow":"68°","avgHigh":"82°","recLow":"55° (1989)","recHigh":"98° (1949)","index":221,"max":85,"min":68},
{"date":"10-Aug","avgLow":"68°","avgHigh":"82°","recLow":"56° (1964)","recHigh":"95° (1949)","index":222,"max":84,"min":70},
{"date":"11-Aug","avgLow":"67°","avgHigh":"82°","recLow":"55° (1962)","recHigh":"97° (1949)","index":223,"max":81,"min":71},
{"date":"12-Aug","avgLow":"67°","avgHigh":"82°","recLow":"50° (1979)","recHigh":"92° (1988)","index":224,"max":85,"min":71},
{"date":"13-Aug","avgLow":"67°","avgHigh":"82°","recLow":"51° (1979)","recHigh":"93° (1970)","index":225,"max":83,"min":67},
{"date":"14-Aug","avgLow":"67°","avgHigh":"81°","recLow":"53° (1961)","recHigh":"94° (1988)","index":226,"max":88,"min":67},
{"date":"15-Aug","avgLow":"67°","avgHigh":"81°","recLow":"54° (1979)","recHigh":"94° (1985)","index":227,"max":92,"min":73},
{"date":"16-Aug","avgLow":"67°","avgHigh":"81°","recLow":"52° (1979)","recHigh":"91° (1959)","index":228,"max":93,"min":76},
{"date":"17-Aug","avgLow":"66°","avgHigh":"81°","recLow":"50° (1979)","recHigh":"93° (1995)","index":229,"max":95,"min":78},
{"date":"18-Aug","avgLow":"66°","avgHigh":"81°","recLow":"54° (1979)","recHigh":"91° (1995)","index":230,"max":90,"min":73},
{"date":"19-Aug","avgLow":"66°","avgHigh":"81°","recLow":"56° (1963)","recHigh":"94° (1966)","index":231,"max":87,"min":77},
{"date":"20-Aug","avgLow":"66°","avgHigh":"81°","recLow":"53° (1949)","recHigh":"95° (1955)","index":232,"max":86,"min":77},
{"date":"21-Aug","avgLow":"66°","avgHigh":"80°","recLow":"50° (1982)","recHigh":"95° (1955)","index":233,"max":87,"min":71},
{"date":"22-Aug","avgLow":"65°","avgHigh":"80°","recLow":"55° (1950)","recHigh":"96° (1995)","index":234,"max":86,"min":69},
{"date":"23-Aug","avgLow":"65°","avgHigh":"80°","recLow":"53° (1952)","recHigh":"92° (1989)","index":235,"max":85,"min":70},
{"date":"24-Aug","avgLow":"65°","avgHigh":"80°","recLow":"53° (1952)","recHigh":"92° (1969)","index":236,"max":87,"min":73},
{"date":"25-Aug","avgLow":"65°","avgHigh":"80°","recLow":"52° (1963)","recHigh":"94° (1969)","index":237,"max":90,"min":73},
{"date":"26-Aug","avgLow":"65°","avgHigh":"79°","recLow":"54° (1952)","recHigh":"100° (1948)","index":238,"max":85,"min":67},
{"date":"27-Aug","avgLow":"64°","avgHigh":"79°","recLow":"55° (1969)","recHigh":"99° (1948)","index":239,"max":82,"min":67},
{"date":"28-Aug","avgLow":"64°","avgHigh":"79°","recLow":"47° (1982)","recHigh":"98° (1953)","index":240,"max":82,"min":63},
{"date":"29-Aug","avgLow":"64°","avgHigh":"79°","recLow":"48° (1965)","recHigh":"95° (1953)","index":241,"max":87,"min":67},
{"date":"30-Aug","avgLow":"63°","avgHigh":"79°","recLow":"48° (1986)","recHigh":"99° (1973)","index":242,"max":90,"min":72},
{"date":"31-Aug","avgLow":"63°","avgHigh":"78°","recLow":"50° (1965)","recHigh":"98° (1953)","index":243,"max":91,"min":76},
{"date":"1-Sep","avgLow":"63°","avgHigh":"78°","recLow":"53° (1948)","recHigh":"92° (1969)","index":244,"max":90,"min":76},
{"date":"2-Sep","avgLow":"63°","avgHigh":"78°","recLow":"52° (1949)","recHigh":"99° (1953)","index":245,"max":91,"min":74},
{"date":"3-Sep","avgLow":"62°","avgHigh":"78°","recLow":"52° (1958)","recHigh":"91° (1953)","index":246,"max":93,"min":74},
{"date":"4-Sep","avgLow":"62°","avgHigh":"77°","recLow":"54° (1994)","recHigh":"93° (1961)","index":247,"max":85,"min":72},
{"date":"5-Sep","avgLow":"62°","avgHigh":"77°","recLow":"52° (1950)","recHigh":"93° (1985)","index":248,"max":83,"min":67},
{"date":"6-Sep","avgLow":"61°","avgHigh":"77°","recLow":"48° (1984)","recHigh":"94° (1983)","index":249,"max":87,"min":65},
{"date":"7-Sep","avgLow":"61°","avgHigh":"77°","recLow":"47° (1962)","recHigh":"92° (1983)","index":250,"max":92,"min":70},
{"date":"8-Sep","avgLow":"61°","avgHigh":"76°","recLow":"50° (1984)","recHigh":"86° (1985)","index":251,"max":97,"min":76},
{"date":"9-Sep","avgLow":"60°","avgHigh":"76°","recLow":"48° (1986)","recHigh":"90° (1959)","index":252,"max":90,"min":76},
{"date":"10-Sep","avgLow":"60°","avgHigh":"76°","recLow":"45° (1956)","recHigh":"98° (1983)","index":253,"max":79,"min":70},
{"date":"11-Sep","avgLow":"60°","avgHigh":"75°","recLow":"49° (1995)","recHigh":"96° (1983)","index":254,"max":81,"min":66},
{"date":"12-Sep","avgLow":"59°","avgHigh":"75°","recLow":"47° (1958)","recHigh":"89° (1961)","index":255,"max":79,"min":69},
{"date":"13-Sep","avgLow":"59°","avgHigh":"75°","recLow":"45° (1985)","recHigh":"92° (1952)","index":256,"max":80,"min":62},
{"date":"14-Sep","avgLow":"59°","avgHigh":"75°","recLow":"41° (1953)","recHigh":"87° (1956)","index":257,"max":77,"min":59},
{"date":"15-Sep","avgLow":"58°","avgHigh":"74°","recLow":"45° (1964)","recHigh":"88° (1994)","index":258,"max":84,"min":62},
{"date":"16-Sep","avgLow":"58°","avgHigh":"74°","recLow":"40° (1984)","recHigh":"91° (1970)","index":259,"max":88,"min":66},
{"date":"17-Sep","avgLow":"58°","avgHigh":"74°","recLow":"42° (1986)","recHigh":"90° (1972)","index":260,"max":89,"min":68},
{"date":"18-Sep","avgLow":"57°","avgHigh":"73°","recLow":"42° (1959)","recHigh":"88° (1965)","index":261,"max":87,"min":68},
{"date":"19-Sep","avgLow":"57°","avgHigh":"73°","recLow":"42° (1956)","recHigh":"93° (1983)","index":262,"max":83,"min":68},
{"date":"20-Sep","avgLow":"57°","avgHigh":"73°","recLow":"41° (1956)","recHigh":"92° (1983)","index":263,"max":79,"min":64},
{"date":"21-Sep","avgLow":"56°","avgHigh":"72°","recLow":"39° (1956)","recHigh":"82° (1965)","index":264,"max":73,"min":59},
{"date":"22-Sep","avgLow":"56°","avgHigh":"72°","recLow":"40° (1962)","recHigh":"92° (1970)","index":265,"max":71,"min":62},
{"date":"23-Sep","avgLow":"56°","avgHigh":"72°","recLow":"43° (1963)","recHigh":"95° (1970)","index":266,"max":80,"min":59},
{"date":"24-Sep","avgLow":"55°","avgHigh":"71°","recLow":"38° (1963)","recHigh":"87° (1959)","index":267,"max":82,"min":60},
{"date":"25-Sep","avgLow":"55°","avgHigh":"71°","recLow":"40° (1950)","recHigh":"90° (1970)","index":268,"max":76,"min":63},
{"date":"26-Sep","avgLow":"54°","avgHigh":"70°","recLow":"42° (1978)","recHigh":"88° (1958)","index":269,"max":72,"min":61},
{"date":"27-Sep","avgLow":"54°","avgHigh":"70°","recLow":"38° (1980)","recHigh":"84° (1972)","index":270,"max":71,"min":56},
{"date":"28-Sep","avgLow":"54°","avgHigh":"70°","recLow":"40° (1957)","recHigh":"82° (1954)","index":271,"max":78,"min":65},
{"date":"29-Sep","avgLow":"53°","avgHigh":"69°","recLow":"41° (1978)","recHigh":"79° (1953)","index":272,"max":83,"min":72},
{"date":"30-Sep","avgLow":"53°","avgHigh":"69°","recLow":"40° (1951)","recHigh":"86° (1986)","index":273,"max":79,"min":59},
{"date":"1-Oct","avgLow":"52°","avgHigh":"68°","recLow":"45° (1966)","recHigh":"82° (1954)","index":274,"max":64,"min":56},
{"date":"2-Oct","avgLow":"52°","avgHigh":"68°","recLow":"42° (1958)","recHigh":"85° (1954)","index":275,"max":57,"min":48},
{"date":"3-Oct","avgLow":"52°","avgHigh":"68°","recLow":"37° (1974)","recHigh":"83° (1995)","index":276,"max":55,"min":49},
{"date":"4-Oct","avgLow":"51°","avgHigh":"67°","recLow":"36° (1974)","recHigh":"83° (1959)","index":277,"max":63,"min":53},
{"date":"5-Oct","avgLow":"51°","avgHigh":"67°","recLow":"37° (1996)","recHigh":"81° (1973)","index":278,"max":67,"min":52},
{"date":"6-Oct","avgLow":"50°","avgHigh":"67°","recLow":"35° (1958)","recHigh":"82° (1959)","index":279,"max":73,"min":52},
{"date":"7-Oct","avgLow":"50°","avgHigh":"66°","recLow":"38° (1954)","recHigh":"83° (1963)","index":280,"max":73,"min":58},
{"date":"8-Oct","avgLow":"50°","avgHigh":"66°","recLow":"36° (1954)","recHigh":"76° (1982)","index":281,"max":72,"min":59},
{"date":"9-Oct","avgLow":"49°","avgHigh":"65°","recLow":"34° (1988)","recHigh":"82° (1959)","index":282,"max":78,"min":61},
{"date":"10-Oct","avgLow":"49°","avgHigh":"65°","recLow":"30° (1979)","recHigh":"85° (1949)","index":283,"max":65,"min":50},
{"date":"11-Oct","avgLow":"49°","avgHigh":"65°","recLow":"33° (1979)","recHigh":"83° (1954)","index":284,"max":69,"min":53},
{"date":"12-Oct","avgLow":"48°","avgHigh":"64°","recLow":"34° (1956)","recHigh":"83° (1962)","index":285,"max":77,"min":56},
{"date":"13-Oct","avgLow":"48°","avgHigh":"64°","recLow":"34° (1980)","recHigh":"85° (1954)","index":286,"max":72,"min":61},
{"date":"14-Oct","avgLow":"47°","avgHigh":"64°","recLow":"33° (1980)","recHigh":"84° (1975)","index":287,"max":null,"min":null},
{"date":"15-Oct","avgLow":"47°","avgHigh":"63°","recLow":"38° (1987)","recHigh":"82° (1975)","index":288,"max":null,"min":null},
{"date":"16-Oct","avgLow":"47°","avgHigh":"63°","recLow":"34° (1978)","recHigh":"82° (1963)","index":289,"max":null,"min":null},
{"date":"17-Oct","avgLow":"46°","avgHigh":"62°","recLow":"36° (1978)","recHigh":"81° (1963)","index":290,"max":null,"min":null},
{"date":"18-Oct","avgLow":"46°","avgHigh":"62°","recLow":"32° (1978)","recHigh":"78° (1964)","index":291,"max":null,"min":null},
{"date":"19-Oct","avgLow":"46°","avgHigh":"62°","recLow":"32° (1948)","recHigh":"78° (1965)","index":292,"max":null,"min":null},
{"date":"20-Oct","avgLow":"45°","avgHigh":"61°","recLow":"30° (1974)","recHigh":"79° (1969)","index":293,"max":null,"min":null},
{"date":"21-Oct","avgLow":"45°","avgHigh":"61°","recLow":"30° (1974)","recHigh":"80° (1963)","index":294,"max":null,"min":null},
{"date":"22-Oct","avgLow":"45°","avgHigh":"61°","recLow":"32° (1948)","recHigh":"79° (1975)","index":295,"max":null,"min":null},
{"date":"23-Oct","avgLow":"44°","avgHigh":"60°","recLow":"27° (1988)","recHigh":"72° (1968)","index":296,"max":null,"min":null},
{"date":"24-Oct","avgLow":"44°","avgHigh":"60°","recLow":"29° (1969)","recHigh":"75° (1995)","index":297,"max":null,"min":null},
{"date":"25-Oct","avgLow":"44°","avgHigh":"60°","recLow":"32° (1981)","recHigh":"74° (1963)","index":298,"max":null,"min":null},
{"date":"26-Oct","avgLow":"44°","avgHigh":"59°","recLow":"32° (1980)","recHigh":"78° (1964)","index":299,"max":null,"min":null},
{"date":"27-Oct","avgLow":"43°","avgHigh":"59°","recLow":"29° (1976)","recHigh":"80° (1963)","index":300,"max":null,"min":null},
{"date":"28-Oct","avgLow":"43°","avgHigh":"58°","recLow":"28° (1976)","recHigh":"77° (1984)","index":301,"max":null,"min":null},
{"date":"29-Oct","avgLow":"43°","avgHigh":"58°","recLow":"31° (1965)","recHigh":"75° (1971)","index":302,"max":null,"min":null},
{"date":"30-Oct","avgLow":"42°","avgHigh":"58°","recLow":"29° (1980)","recHigh":"76° (1950)","index":303,"max":null,"min":null},
{"date":"31-Oct","avgLow":"42°","avgHigh":"57°","recLow":"30° (1980)","recHigh":"75° (1950)","index":304,"max":null,"min":null},
{"date":"1-Nov","avgLow":"42°","avgHigh":"57°","recLow":"32° (1951)","recHigh":"81° (1974)","index":305,"max":null,"min":null},
{"date":"2-Nov","avgLow":"42°","avgHigh":"57°","recLow":"30° (1965)","recHigh":"80° (1950)","index":306,"max":null,"min":null},
{"date":"3-Nov","avgLow":"41°","avgHigh":"57°","recLow":"30° (1984)","recHigh":"73° (1975)","index":307,"max":null,"min":null},
{"date":"4-Nov","avgLow":"41°","avgHigh":"56°","recLow":"30° (1951)","recHigh":"75° (1974)","index":308,"max":null,"min":null},
{"date":"5-Nov","avgLow":"41°","avgHigh":"56°","recLow":"29° (1951)","recHigh":"73° (1975)","index":309,"max":null,"min":null},
{"date":"6-Nov","avgLow":"40°","avgHigh":"56°","recLow":"28° (1951)","recHigh":"77° (1948)","index":310,"max":null,"min":null},
{"date":"7-Nov","avgLow":"40°","avgHigh":"55°","recLow":"30° (1962)","recHigh":"68° (1994)","index":311,"max":null,"min":null},
{"date":"8-Nov","avgLow":"40°","avgHigh":"55°","recLow":"28° (1960)","recHigh":"75° (1975)","index":312,"max":null,"min":null},
{"date":"9-Nov","avgLow":"40°","avgHigh":"54°","recLow":"24° (1976)","recHigh":"74° (1975)","index":313,"max":null,"min":null},
{"date":"10-Nov","avgLow":"39°","avgHigh":"54°","recLow":"30° (1954)","recHigh":"71° (1985)","index":314,"max":null,"min":null},
{"date":"11-Nov","avgLow":"39°","avgHigh":"54°","recLow":"23° (1954)","recHigh":"72° (1949)","index":315,"max":null,"min":null},
{"date":"12-Nov","avgLow":"39°","avgHigh":"53°","recLow":"25° (1987)","recHigh":"66° (1964)","index":316,"max":null,"min":null},
{"date":"13-Nov","avgLow":"38°","avgHigh":"53°","recLow":"18° (1986)","recHigh":"71° (1964)","index":317,"max":null,"min":null},
{"date":"14-Nov","avgLow":"38°","avgHigh":"53°","recLow":"18° (1986)","recHigh":"70° (1973)","index":318,"max":null,"min":null},
{"date":"15-Nov","avgLow":"38°","avgHigh":"52°","recLow":"24° (1986)","recHigh":"74° (1973)","index":319,"max":null,"min":null},
{"date":"16-Nov","avgLow":"37°","avgHigh":"52°","recLow":"24° (1996)","recHigh":"69° (1956)","index":320,"max":null,"min":null},
{"date":"17-Nov","avgLow":"37°","avgHigh":"52°","recLow":"24° (1959)","recHigh":"70° (1953)","index":321,"max":null,"min":null},