// JS
var chart;
JSC.fetch('./resources/NYMonthlyWeather.csv')
.then(function(response) {
return response.text();
})
.then(function(text) {
chart = renderChart(
makeSeries(JSC.csv2Json(text))
);
});
function renderChart(series) {
return JSC.chart('chartDiv', {
annotations: [
{
label_text:
'<b>New York Temperature, 2018</b>',
position: 'top left'
}
],
legend: {
template: '%icon %name',
position: 'top right'
},
defaultTooltip_label_text:
'<b>%xValue</b><br>%points',
defaultPoint: {
tooltip: '%SeriesName: <b>%yValue in</b>',
outline_width: 0,
marker_outline_width: 0
},
defaultAxis_alternateGridFill: 'none',
yAxis: [
{
id: 'y1',
defaultTick: {
label_text: '%value°F',
line_visible: false
},
scale_range: [0, 100]
},
{
id: 'y2',
orientation: 'right',
defaultTick: {
enabled: false
//label_text: '%value in'
},
scale_range: [0, 60]
}
],
xAxis: {
scale: {
type: 'time',
interval: { unit: 'month', multiplier: 1 }
},
defaultTick_line_visible: false,
formatString: 'MMM',
crosshair_enabled: true
},
series: series
});
}
function makeSeries(data) {
var key = JSC.nest().key('month');
return [
{
name: 'Min/Max',
type: 'area spline',
yAxis: 'y1',
color: '#e0c8ff',
line_width: 0,
defaultPoint: {
tooltip:
'%SeriesName: <b>{%yStart:n0}°F - {%yValue:n0}°F</b>',
marker_visible: false,
focusGlow: false
},
points: data.map(function(item) {
return {
x: parseInt(item.month),
y: [item.min_temp, item.max_temp]
};
})
},
{
name: 'Average',
color: '#a87dec',
line_color: 'currentColor',
type: 'line',
yAxis: 'y1',
defaultPoint: {
tooltip:
'%SeriesName: <b>{%yValue:n0}°F</b>',
marker: {
type: 'circle',
fill: 'white',
outline: {
width: 3,
color: 'currentColor'
}
}
},
points: key.rollup('avg_temp').points(data)
},
{
name: 'Precipitation',
type: 'column solid',
yAxis: 'y2',
color: '#8cc3ff',
points: key.rollup('precip').points(data)
},
{
name: 'Daily Max Precipitation',
type: 'marker',
yAxis: 'y2',
defaultPoint_marker_type: 'diamond',
color: '#6599ff',
points: key
.rollup('max_precip')
.points(data)
}
];
}
month,max_temp,avg_temp,min_temp,precip,max_precip
1/1/2018,60,32,6,2.12,0.69
2/1/2018,79,42,17,5.03,1.28
3/1/2018,60,41,29,3.44,1.76
4/1/2018,82,50,32,5.02,2.5
5/1/2018,93,68,50,3.24,0.64
6/1/2018,96,73,52,3.61,1.48
7/1/2018,97,80,64,5.28,1.6
8/1/2018,98,81,68,6.66,1.95
9/1/2018,96,73,57,5.89,1.99
10/1/2018,82,60,42,3.02,1.01
11/1/2018,71,46,17,7.09,1.11
12/1/2018,62,41,26,6.9,1.69